oracle - 如何使用 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.
请指导。
解决方案
正如错误消息所暗示的,您可以尝试的一种方法是使用绑定变量。如果您不熟悉它们,它们对于很多事情都非常有用,包括在使用 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
推荐阅读
- r - R:来自元素向量的所有长度的所有组合,每个元素具有2个条件
- python-3.x - a,b = b,a 为什么这样有错误的结果
- android - 如何删除谷歌登录?
- c++ - 带有 c 样式字符串的 C++ 指针
- python - 在 python 中导入具有用户输入名称的模块
- android - 当我在 Iframe 中嵌入 YouTube 视频时,我想从中删除视频标题
- vue.js - 使用 Vue + Axios 创建编辑表单 - 将数据库中的动态值添加到表单输入
- python - 拆分字符串的最后两位
- android - 如何避免软键盘在 Android 中向上推按钮(iOS 可以)
- c# - 仅显示与用户属于同一教师的候选人