在Oracle中使用SQL LOADER导入CSV文件

Mar*_*son 5 sql csv database-design database-connection oracle11g

我对数据库和编程很陌生。我对计算机术语不是很好,所以请坚持。我有一个csv文件正在尝试加载到Oracle数据库中。它包含帐户信息,例如姓名,电话号码,服务日期等Oracle 11g Release 2。到目前为止,这是我逐步完成的工作。

1)运行SQL Loader

我用所需的列创建了一个新表。例如

create table Billing ( TAP_ID char(10), ACCT_NUM char(10), MR_ID char(10), HOUSE_NUM char(10), STREET char(30), NAME char(50)
Run Code Online (Sandbox Code Playgroud)

2)它提示我表已创建。接下来,我为记事本中的数据创建了一个控制文件,该文件与Billing表位于同一目录中,并具有.ctl扩展名。GIS.csv是从中获取数据的文件,并且在同一目录中,并将其命名为Billing.ctl,看起来像这样。

load data
infile GIS.csv
into table Billing
fields terminated by ','
(TAP_ID, ACCT_NUM, MR_ID, HOUSE_NUM, STREET, NAME)
Run Code Online (Sandbox Code Playgroud)

3)从命令行运行sqlldr以使用控制文件

sqlldr myusername/mypassword  Billing.ctl
Run Code Online (Sandbox Code Playgroud)

这就是我卡住的地方。我看过关于我正在做什么的视频教程,但出现此错误:

SQL*Loader-522: lfiopn failed for file (Billing.log)
Run Code Online (Sandbox Code Playgroud)

关于我在这里做错什么的任何想法?

更新资料

我只是将文件移到一个单独的目录中,并且我想摆脱了先前的错误。顺便说一句,Billing.ctl和GIS.csv在同一目录中。

但是现在我有另一个错误:

'SQL*Loader-350: Syntax error at line 1.
Run Code Online (Sandbox Code Playgroud)

预期关键字LOAD,找到“ SERV TAP ID”。“ SERV TAP ID”,“ ACCT号码”,“ MTR ID”,“ SERV HOUSE”,“ SERV STREET”,“ SERV ^'

我不明白为什么会出现这个错误。我的billing.ctl有负载。

LOAD data
infile GIS.csv
into table Billing
fields terminated by ','
(TAP_ID, ACCT_NUM, MTR_ID, SERV_HOUSE, SERV_STREET, SERV_TOWN, BIL_NAME, MTR_DATE_SET, BIL_PHONE, MTR_SIZE, BILL_CYCLE, MTR_RMT_ID)
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?

Cod*_*odo 4

Sqlldr 希望在控制文件所在的同一目录中写入日志文件。但显然不能。它可能没有所需的权限。

如果您使用的是 Linux 或 Unix,请尝试以与运行 sqldr 相同的方式运行以下命令:

touch Billing.log
Run Code Online (Sandbox Code Playgroud)

它将显示您是否有权限。

更新

正确的命令行是:

sqlldr myusername/mypassword control=Billing.ctl
Run Code Online (Sandbox Code Playgroud)