【问题标题】:Invalid table name while bulk insert in oracle在 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 语法。

标签: sql oracle


【解决方案1】:

这根本不是 Oracle 语法。如果您需要将数据从文件加载到表,请使用SQLoaderExternal table
关于External tableSQLoader 的一些文档

如果您使用的是 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?
  • 知道了。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-12
  • 1970-01-01
相关资源
最近更新 更多