1

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

现在我尝试使用 Java 使用 JDBC 恢复转储。问题是我已经有了完整的 PreparedStatement,所以我无法将列的数据类型从字符串更改为 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)

4

1 回答 1

0

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

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

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

于 2012-07-14T17:39:41.327 回答