【发布时间】:2018-06-15 04:57:02
【问题描述】:
我有 10 个表的 Oracle 数据库。一些表具有 CLOB 数据文本。我需要使用 java 以编程方式从这些表中导出数据。导出数据应为 ANSI INSERT INTO SQL 格式,例如:
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
主要思想是我需要将这些数据导入三个不同的数据库:
ORACLE、MSSQL 和 MySQL。据我所知,所有这些数据库都支持 ANSI INSERT INTO。但我还没有找到任何用于生成数据 SQL 脚本的 java API/框架。而且我不知道如何处理 CLOB 数据,如何导出它。
用java从数据库中导出数据的最佳方法是什么?
更新: (01.07.2018)
我想根据this answer插入超过4000字节的文本数据是不可能的。如何以编程方式使用 java 生成 PL\SQL 脚本?或者有没有其他支持ORACLE、MSSQL等的导出格式?
【问题讨论】:
-
有可能在 Java 中完成整个事情,例如打开与 Oracle(源)和 SQL Server(目标)的连接,并从 Oracle 迭代一个表,将每条记录写入 SQL Server。
-
您是否绝对需要一组 ANSI SQL 文件,或者您能负担得起写入分隔文本文件然后从中加载的费用吗?如果您转储到文本然后导入而不是执行 SQL 进行加载,这会更容易和更快。
-
不,我绝对不需要 ANSI SQL 文件(但它会很完美)。现在我决定将所有数据导入 XML 文件。并用hibernate编写一个小java工具,将这个文件中的所有数据插入到数据库中。然后我可以更改驱动程序并将其应用于不同的 SQL 供应商。
-
我认为您使用 DB-to-file-to-DB 管道比使用 SQL 脚本要好得多,即使以自定义转储/加载为代价,因为您很难获得任何简单的 -适合所有的 SQL 脚本集。
-
最佳做法是将 Clob 导出为外部文件并通过文件加载。我建议你阅读dba-oracle.com/t_insert_clob_table_column.htm