【发布时间】:2015-11-10 02:46:38
【问题描述】:
我正在尝试使用 Oracle11 从 CSV 文件批量插入表中。我的问题是数据库位于远程机器上,我可以使用 sqlpl 来使用它:
sqlpl username@oracle.machineName
很遗憾,sqlldr 无法使用以下命令进行连接:
sqlldr userid=userName/PW@machinename control=BULK_LOAD_CSV_DATA.ctl log=sqlldr.log
错误是:
Message 2100 not found; No message file for product=RDBMS, facility=ULMessage 2100 not found; No message file for product=RDBMS, facility=UL
现在放弃了这种方法,我尝试编写一个基本的 sql 脚本,但我不确定 BULK 的正确 Oracle 关键字。我知道这在 MySql 中有效,但我得到:
unknown command beginning "BULK INSER..."
运行脚本时:
BULK INSERT <TABLE_NAME>
FROM 'CSVFILE.csv'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GO
我不在乎哪一个有效!任何一个都可以,我只需要一点帮助。
【问题讨论】:
-
首先,我假设您的意思是“sqlplus”比“sqlpl”更重要。您是否在运行
SQL*Plus的同一台机器上运行SQL*Loader?为什么使用“oracle.machinename”作为一个的 TNS 别名,而使用“machinename”作为另一个的 TNS 别名? Oracle 没有BULK INSERT语句。如果 CSV 文件存在于客户端,您将使用SQL*Loader;如果 CSV 文件存在于服务器上,您将使用外部表。
标签: oracle csv syntax insert bulkinsert