在 oracle 中批量插入时表名无效
Posted
技术标签:
【中文标题】在 oracle 中批量插入时表名无效【英文标题】:Invalid table name while bulk insert in oracle 【发布时间】:2016-12-13 14:38:18 【问题描述】:我正在尝试使用 Bulk Insert
查询将值插入 Oracle 表,但出现以下错误
ORA-00903: invalid table name
00903. 00000 - "invalid table name"
*Cause:
*Action:
Error at Line: 4 Column: 5
这是我的查询
BULK INSERT TEST1.STUDENT
FROM 'C:\Users\Alan\Desktop\STUDENT.txt'
WITH
(
FIELDTERMINATOR = '\t',
ROWTERMINATOR = '\n'
);
为什么会出现这个错误。查询有问题吗?请帮忙。谢谢
更新
我将文件格式更改为CSV
,并在下面写了查询
LOAD DATA
INFILE 'C:\Users\Alan\Desktop\STUDENT.csv'
INTO TABLE TEST1.STUDENT
FIELDS TERMINATED BY ","
(ID,
NAME);
但上面的查询给出了
ORA-00928: missing SELECT keyword
00928. 00000 - "missing SELECT keyword"
*Cause:
*Action:
Error at Line: 16 Column: 2
上面的语法有什么问题?
【问题讨论】:
这根本不是 Oracle 语法。 【参考方案1】:这根本不是 Oracle 语法。如果您需要将数据从文件加载到表,请使用SQLoader 或External table 关于External table 和SQLoader 的一些文档
如果您使用的是 SQLDeveloper,您还可以使用导入工具。
也请看一下thread。
[编辑
LOAD DATA
INFILE 'C:\Users\Alan\Desktop\STUDENT.csv'
INTO TABLE TEST1.STUDENT
FIELDS TERMINATED BY ","
(ID,
NAME);
这不是查询。这是控制文件的内容。请将其保存到文件 load.csv 然后运行 cmd
(如果你在 Linux 上,则运行 shell)并输入:
sqlldr user/pass control=load.ctl
您可以找到一些示例here。
【讨论】:
我已根据 SO 答案使用更新后的查询更新了我的帖子,但出现错误。请查看更新的查询和错误。更新后的查询有什么问题?谢谢 @Lara 我已经编辑了答案并添加了如何运行 SQLoader 的示例。您使用什么客户端/IDE? 知道了。谢谢以上是关于在 oracle 中批量插入时表名无效的主要内容,如果未能解决你的问题,请参考以下文章
Oracle批量插入数据SQL语句太长出错:无效的主机/绑定变量名
Oracle:使用 select 插入不返回批量收集新插入的 id