首页 > 解决方案 > 如何使用 sqlplus 终端将大量数据插入 Oracle DB 中的“长”数据类型?

问题描述

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

例如:插入测试(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.

请指导。

标签: oraclesqlplus

解决方案


正如错误消息所暗示的,您可以尝试的一种方法是使用绑定变量。如果您不熟悉它们,它们对于很多事情都非常有用,包括在使用 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


推荐阅读