2017-10-30 18 views
0

Excelまたはテキストファイル内のすべてのテーブルの数をエクスポートしようとしています。進捗状況4gl db内のすべてのテーブルのレコードのエクスポート数のクエリ

if any program or any query will help me ? 

各テーブルで使用できるデータのエクスポート回数をコード化しようとしています。

コード:

define stream table t1. 
    output stream t1 to t1.csv. 

    &scope-define display-fields count(*) 

    select count(*) from emp. 

    export starem t1 delimiter ",". 

このコードは、空の値ではなく、画面上の表示結果のExcel作成します。私は秀でている。

+0

各テーブルで使用可能なデータのエクスポート回数をコード化しようとしています。 コード: ストリームテーブルt1を定義します。 出力ストリームt1〜t1.csv。 EMPから &表示フィールド(*)はカウントスコープ定義 選択数(* 0。 輸出starem t1の区切り「」。 このコード作成画面に空の値が、表示結果と優れている。私は、アウト – user3668036

答えて

1

あなたがしたいことはわかりません。あなたは、データベース内のテーブルの数をカウントしたい場合には、このような何か:

DEFINE VARIABLE icount AS INTEGER NO-UNDO. 
FOR each _file NO-LOCK WHERE _file._owner = "PUB": 

    /* Skip "hidden" virtual system tables */ 
    IF _file._file-name BEGINS "_" THEN NEXT. 

    iCount = iCount + 1. 
END. 

MESSAGE iCount "tables in the database" 
    VIEW-AS ALERT-BOX INFORMATION. 

あなたには、いくつかのdbのは、あなたがdatabase._fileすなわちデータベース名と_file -tableを付加する必要が接続されている場合。

しかし、「エクセルへのエクスポート」と言うと、おそらくテーブルごとのレコード数を知りたいということでしょうか?

テーブル内のレコード数をカウントするには、FORまたはSELECTを使用できます。

SELECT COUNT(*) FROM tablename. 

または

DEFINE VARIABLE iCount AS INTEGER NO-UNDO. 
FOR EACH tablename NO-LOCK TABLE-SCAN: 
    iCount = iCount + 1. 
END. 
DISPLAY iCount. 

あなたはすべてのレコードを数え、動的クエリとそれを組み合わせる必要があり、各テーブルのためにこれをコーディングする必要がない場合。

DEFINE VARIABLE hQuery AS HANDLE NO-UNDO. 
DEFINE VARIABLE hBuffer AS HANDLE NO-UNDO. 
DEFINE VARIABLE iCount AS INTEGER NO-UNDO. 
DEFINE VARIABLE cTable AS CHARACTER NO-UNDO. 

/* Insert tablename here */ 
cTable = "TableName". 

CREATE QUERY hQuery. 
CREATE BUFFER hBuffer FOR TABLE cTable. 

hQuery:SET-BUFFERS(hBuffer). 

hQuery:QUERY-PREPARE(SUBSTITUTE("FOR EACH &1", cTable)). 

hQuery:QUERY-OPEN. 

queryLoop: 
REPEAT: 

    hQuery:GET-NEXT(). 

    IF hQUery:QUERY-OFF-END THEN LEAVE queryLoop. 

    iCount = iCount + 1. 
END. 

DELETE OBJECT hQuery. 
DELETE OBJECT hBuffer. 

MESSAGE iCount "records in the table". 

これら2つを組み合わせて解決策があります。ただし、すべてのテーブルのすべてのレコードがカウントされるため、処理が遅くなる可能性があります。

間に合わせの方法は、あなたがプロンプトを経由して、それへのアクセス権を持っている場合は代わりに、データベースの「tabanalys」を実行することです:

proutil DatabaseName -C tabanalys > tabanalys.txt 

これは、オンラインで実行することができますので、ファイルIOなどに影響を与える可能性がありますピーク時に初めてそれを実行してください。そのファイルを調べると、システムテーブルとユーザーテーブルのすべてのテーブルのレコード数、サイズなどが表示されます。

オンラインでProutilが実行される可能性は100%ではないかもしれませんが、「十分に良い」可能性があります。

+0

私はテーブルのデータを数えたいと思っていますか? – user3668036

+0

私はそれを行う方法の例を更新しました(おそらくもっとスマートな方法もあります)。 – Jensd

+0

偉大な解決策..大丈夫です。 – user3668036

関連する問題