あなたがしたいことはわかりません。あなたは、データベース内のテーブルの数をカウントしたい場合には、このような何か:
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%ではないかもしれませんが、「十分に良い」可能性があります。
各テーブルで使用可能なデータのエクスポート回数をコード化しようとしています。 コード: ストリームテーブルt1を定義します。 出力ストリームt1〜t1.csv。 EMPから &表示フィールド(*)はカウントスコープ定義 選択数(* 0。 輸出starem t1の区切り「」。 このコード作成画面に空の値が、表示結果と優れている。私は、アウト – user3668036