Oracle SQL加载程序控制文件分隔符
我想将客户信息表导入我的数据库。下面简要显示了数据文件(纯文本)的结构Oracle SQL加载程序控制文件分隔符,sql,oracle,sql-loader,Sql,Oracle,Sql Loader,我想将客户信息表导入我的数据库。下面简要显示了数据文件(纯文本)的结构 "Cust_ID Cust_Name Level" "0001 Eric Cartman 05" "0002 Kyle Broflovski 02" 由“括起的每一行都是一条记录,分隔符是一个选项卡。因此,在我的SQL Loader控制文件中,我将编写如下内容: FIELDS TERMINATED BY ' ' (Cust_ID, --????? Cust_Name,
"Cust_ID Cust_Name Level"
"0001 Eric Cartman 05"
"0002 Kyle Broflovski 02"
由“
括起的每一行都是一条记录,分隔符是一个选项卡。因此,在我的SQL Loader控制文件中,我将编写如下内容:
FIELDS TERMINATED BY ' '
(Cust_ID, --?????
Cust_Name,
Level TERMINATED BY '"' )
我想告诉SQL loader忽略每个客户ID
之前的“
。我应该在这里添加什么?谢谢。您可以使用忽略记录开头的双引号。这定义了一个我名义上称之为quote
的填充字段,该字段以第一个“
结尾:
在这种情况下,quote
字段的值将为空,但我们将忽略它,因此这并不重要
将数据文件作为表,定义为:
create table t42(cust_id number, cust_name varchar2(20), cust_level number);
…您的数据被插入为:
select * from t42;
CUST_ID CUST_NAME CUST_LEVEL
---------- -------------------- ----------
1 Eric Cartman 5
2 Kyle Broflovski 2
我之所以调用第三列
cust_level
,是因为level
是一个保留字;您可以强制使用它,但这会让您感到痛苦。另外请注意,我使用了truncate
,因此这将替换表中的任何现有数据;如果您要添加新数据,请将其更改为append
首先将其加载到暂存表中,并加上引号。然后您可以通过更新查询将其删除。@DanBracuk谢谢您的评论。如果这是一个真实案例而不是家庭作业,我肯定会按照您所说的做。但由于这是家庭作业,而且要求只是将其加载到暂存表中,我想我应该找到一些使暂存表看起来漂亮的方法:(您知道一旦数据在暂存表中,如何去掉引号吗?
select * from t42;
CUST_ID CUST_NAME CUST_LEVEL
---------- -------------------- ----------
1 Eric Cartman 5
2 Kyle Broflovski 2