将临时表“转储”为SQL格式的最简单方法是什么?

时间:2013-02-18 15:31:14

标签: progress-4gl openedge

版本:10.2b

所以我想说我正在训练桌狗:

table: dogs 
fields: name, age, breed

我想使用标准加载实用程序将它们加载到oracle数据库中。但是oracle中的表看起来像这样

table: dog
fields: name, age, date_last_updated

所以,如果我创建一个与之匹配的临时表,有没有办法将临时表“转储”到sql中? (这样我就可以加载到oracle中)

如果没有,那也是一个很好的答案。

感谢您的帮助!!

编辑: 通过'sql dump'我的意思是:

INSERT INTO dog
VALUES (Max, 5, Feb 18, 2013)

有没有办法以这种格式获取表格,然后将单词“INSERT INTO”导出到我的文件中。

3 个答案:

答案 0 :(得分:1)

感谢您的澄清。

从4GL中,转储表(真实表或临时表)的“自然”方式是使用EXPORT语句来创建文本文件。像这样:

/* export the dog record as-is
 */

output to "dog.d".
for each dog no-lock:
  export dog.
end.
output close.

或:

/* export modified dog records
 */

output to "dog.d".
for each dog no-lock:
  export dog.name dog.age now.
end.
output close.

这个Oracle: Import CSV file表明可以将CSV文件导入Oracle,因此您可以修改上面的代码,以便创建逗号分隔文件而不是使用Progress的默认空格分隔符:

/* export modified dog records to a CSV file
 */

output to "dog.csv".
for each dog no-lock:
  export delimiter "," dog.name dog.age now.
end.
output close.

答案 1 :(得分:1)

根据您的问题,这样的事情会起作用。您还可以将“TT”引用替换为实际的表名。

OUTPUT TO VALUE("sqldump").

FOR EACH tt-dogs:

  PUT UNFORMATTED
     "INSERT INTO dog VALUES (" tt-dogs.dog-name tt-dogs.age TODAY ")" SKIP.

END.

OUTPUT CLOSE.

答案 2 :(得分:1)

使用具有ODBC支持的数据库管理工具(例如DBeaver)即可 连接到进度数据库并将表和视图导出到SQL插入。