使用Java导入带有insert语句和clob数据类型的Oracle表转储

时间:2012-07-14 17:04:35

标签: oracle jdbc prepared-statement dump clob

我有一个包含insert语句的Oracle表转储。某些表包含clob数据字段。如果我尝试使用SQL Developer恢复转储,我会收到错误“ORA-01704:string literal too long”

现在我尝试使用Java使用JDBC恢复转储。问题是我已经有了完全组合的PreparedStatement,因此我无法将列的数据类型从string更改为clob。

下面列出了应用程序:

// strBufLine contains already the fully composed insert statement from the dump file
PreparedStatement pstmt = connection.prepareStatement("BEGIN " + strBufLine.toString() + " END;");
pstmt.executeUpdate();
pstmt.close();

知道如何解决此问题(使用其他程序恢复转储,其他转储技术或如何将数据类型更改为clob)

1 个答案:

答案 0 :(得分:0)

如果SQL Developer的字符串文字太长,那么对于JDBC来说它也会太长,因为它在服务器端进行了解析。

我建议您将文件转换为CSV或固定长度文件。这应该不会太困难,因为它是单个表的转储。所以每一行都有类似的结构。甚至可以在带有“搜索/替换”的文本编辑器中执行此操作。

然后您可以使用SQL Developer(导入数据... 在所需表格的上下文菜单中)导入它。