如何使用 sqlplus 终端将大量数据插入 Oracle DB 中的“长”数据类型?

Posted

技术标签:

【中文标题】如何使用 sqlplus 终端将大量数据插入 Oracle DB 中的“长”数据类型?【英文标题】:How to insert huge data to "long" datatype in Oracle DB using sqlplus terminal? 【发布时间】:2019-01-18 09:53:13 【问题描述】:

我的要求是将非常大的数据存储到 Oracle DB 中的“LONG”数据类型列。 我知道对于 CLOB 和 NCLOB 可以使用 BFile 来实现(通过从文件中读取它)。但是我该怎么做 long

例如:插入测试(LONG_COL)值('值超过4000个字符');

这里 LONG_COL 的类型是“LONG”。

如果我在 SQLPlus 上执行查询,则会出现以下错误。

SQL Error: ORA-01704: string literal too long
01704. 00000 -  "string literal too long"
*Cause:    The string literal is longer than 4000 characters.
*Action:   Use a string literal of at most 4000 characters.
           Longer values may only be entered using bind variables.

请指导。

【问题讨论】:

仅供参考,LONGs 已弃用。 Oracle 建议改用CLOBs。我不知道这是否是一种选择。 【参考方案1】:

正如错误消息所示,您可以尝试的一种方法是使用绑定变量。如果您不熟悉它们,它们对于很多事情都非常有用,包括在使用 SQL*Plus 时绕过 ORA-01704 错误,甚至保护您的数据库免受潜在的 SQL 注入攻击。

以下是您可以使用的几个示例:

https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:2320123769177

https://asktom.oracle.com/pls/asktom/asktom.search?tag=pls-00172-string-literal-too-long

https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:2320123769177

https://oracle-base.com/articles/misc/literals-substitution-variables-and-bind-variables

【讨论】:

以上是关于如何使用 sqlplus 终端将大量数据插入 Oracle DB 中的“长”数据类型?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Sqlplus 输出中删除下划线

如何使用python在sqlplus中插入带有'&'的值

SQLPlus 在插入时删除 clob 字段中的尾随空格

如何在将大量数据插入数据库之前检查记录是不是存在?

如何将大量数据插入数据库[重复]

如何从 sql 文件创建本地脱机 sqlplus 数据库?