Не уверен, что ты хочешь делать. Что-то вроде этого, если вы хотите подсчитать количество таблиц в базе данных:
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.
Если у вас подключено несколько баз данных, вам необходимо добавить к таблице _file
имя базы данных, т.е. database._file
.
Однако: поскольку вы говорите «экспортировать в Excel», возможно, вы имеете в виду, что хотите знать количество записей для каждой таблицы?
Чтобы подсчитать количество записей в таблице, вы можете использовать FOR
или SELECT
.
SELECT COUNT(*) FROM tablename.
or
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".
Объедините эти два, и у вас есть решение. Однако это может быть медленным, поскольку будут подсчитываться все записи всех таблиц.
Быстрый и грязный способ — запустить «tabanalys» в базе данных, если у вас есть доступ к ней через приглашение:
proutil DatabaseName -C tabanalys > tabanalys.txt
Это может быть запущено онлайн и может повлиять на файловый ввод-вывод и т. д., поэтому запускайте его в первый раз в нерабочие часы, просто чтобы убедиться. Затем загляните в этот файл, вы увидите количество записей, размеры и т. д. для всех таблиц: как системных, так и пользовательских.
Proutil, запущенный онлайн, может быть не на 100% правильным, но, скорее всего, «достаточно хорошим».
person
Jensd
schedule
30.10.2017