progress 4gl - 将临时表'dump'为 SQL 格式的最简单方法是什么



版本:10.2b

比方说我有一个正在进行中的桌子狗:

table: dogs 
fields: name, age, breed

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

table: dog
fields: name, age, date_last_updated

那么,如果我制作一个与之匹配的临时表,有没有办法将临时表"转储"到sql中?(这样我就可以把它加载到oracle中)

如果不是,这也是一个很好的答案。

谢谢你的帮助!!

编辑:我所说的"sql转储"是指:

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

除了将单词"INSERT INTO"导出到我的文件中之外,还有什么方法可以获得这种格式的表吗。

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

根据您的问题,这样的方法是可行的。您还可以将"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.

感谢您的澄清。

从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文件表明,将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.

最新更新