如何使用 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 中的“长”数据类型?的主要内容,如果未能解决你的问题,请参考以下文章