Запись значения временной таблицы в файл .csv - PullRequest
0 голосов
/ 20 февраля 2012

Мы создали одну временную таблицу динамически. и мы хотим поместить полную таблицу в файл .csv. как сделать?

DEF VAR ttH AS HANDLE NO-UNDO.
ttH:CREATE-LIKE(hBuffer).
ttH:Temp-table-prepare("tmytable")

Ответы [ 2 ]

1 голос
/ 20 февраля 2012

См. Прогресс KB P4410 для синтаксиса обработки экстента.Возможно, вы также захотите добавить FORWARD-ONLY = TRUE к запросу перед QUERY-PREPARE, чтобы повысить производительность.

1 голос
/ 20 февраля 2012

Поскольку вы создали свою временную таблицу динамически, вы не можете использовать оператор EXPORT (по крайней мере, насколько мне известно). Однако вы можете динамически выводить сначала имена полей, а затем значения полей вашей таблицы. Вот так:

DEFINE VARIABLE hQuery  AS HANDLE NO-UNDO.
DEFINE VARIABLE ttH     AS HANDLE NO-UNDO.

/* Define a new output stream  */
DEFINE STREAM s1.
OUTPUT stream s1 to "myCSV.csv".

/* Create a query for the contents of your temp-table */
CREATE QUERY hQuery.
/* Important: we need to use the temp-tables default buffer handle, 
/* not the hBuffer handle to the original table! */
hQuery:SET-BUFFERS (ttH:DEFAULT-BUFFER-HANDLE).
/* Use the name you created before for the FOR EACH clause */
hQuery:QUERY-PREPARE("FOR EACH tmytable").
hQuery:QUERY-OPEN().
hQuery:GET-FIRST().

/* Write out the names of the fields as header in the first row */
DEFINE VARIABLE i AS INTEGER NO-UNDO.
DO i = 1 TO ttH:DEFAULT-BUFFER-HANDLE:NUM-FIELDS:
    PUT STREAM s1 UNFORMATTED ttH:DEFAULT-BUFFER-HANDLE:buffer-field(i):name + ",".
END.
PUT STREAM s1 UNFORMATTED SKIP.

/* Walk through the query and output each field seperately. */
REPEAT:  
    hQuery:GET-NEXT().  
    IF hQuery:QUERY-OFF-END THEN LEAVE.  

    DO i = 1 TO ttH:DEFAULT-BUFFER-HANDLE:NUM-FIELDS:
        PUT STREAM s1 UNFORMATTED ttH:DEFAULT-BUFFER-HANDLE:buffer-field(i):buffer-value ",".
    END.
    PUT STREAM s1 UNFORMATTED SKIP.
END.

OUTPUT stream s1 close.

Просто обратите внимание, что это может не сработать при большом количестве записей в таблице!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...