插入时出现 Oracle 错误 SP2-0734

Posted

技术标签:

【中文标题】插入时出现 Oracle 错误 SP2-0734【英文标题】:Oracle error SP2-0734 on insert 【发布时间】:2017-10-27 08:45:14 【问题描述】:

我在服务器Oracle版本10.2.0.5上直接使用sqlplus

我在使用类似这样的简单脚本加载数据时遇到问题

alter session set NLS_NUMERIC_CHARACTERS = ",.";
SET SQLBLANKLINES ON;
SET FEEDBACK OFF;
@TEST_DATA_TABLE.sql
commit;

文件 TEST_DATA_TABLE.sql

SET DEFINE OFF;
Insert into test ( ID_TEST, .... ) values ('1',....);
Insert into test ( ID_TEST, .... ) values ('2',....);
...
Insert into test ( ID_TEST, .... ) values ('10',...,.... 'jlkjlkdjs');
...
Insert into test ( ID_TEST, .... ) values ('500000',....);
...

对于所有行太长,我都有以下错误示例: SP2-0734:以“jlkj .......”开头的未知命令 - 忽略行的其余部分。 其他行没问题

限制似乎是 arround 255 个字符在同一行! 我直接在sqlplus中尝试复制/粘贴错误的行,如果我在多行上剪切行就可以了...

我正在寻找一种解决方案,而不是创建一个外壳来滑倒所有的长线。

谢谢

【问题讨论】:

【参考方案1】:

关于文档是正常的: https://docs.oracle.com/cd/B19306_01/server.102/b14357/apa.htm

为了插入更多数据,我这样做了:

for file in *DATA*.sql
do
  wc -l  $file
  sed 's/ values / values\n /g' $file > IMPORT/$file
  dos2unix  IMPORT/"$file" IMPORT/"$file"
  cat IMPORT/"$file" | awk 'length($0) > 240' | wc -l
done

我希望有时间研究更好的解决方案

【讨论】:

以上是关于插入时出现 Oracle 错误 SP2-0734的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 CONCAT 解决 SQL Plus 中的 SP2-0734?

SP2-0734:未知命令开始选择

在sql plus 中,运行dbms_output.put时提示SP2-0734: unknown command beginning 请问是何缘故?

SP2-0734: 未知的命令开头 "imp scott/..." - 忽略了剩余的行。

使用python将数据从csv文件插入oracle时出现错误ORA-01722:无效数字

编译触发器时出现 Oracle 错误 ORA-00922