我想将一份客户信息表导入我的数据库。数据文件的结构(纯文本)简要显示如下。
"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在每个"
之前忽略Cust_ID
。我应该在这里添加什么?谢谢。
答案 0 :(得分:1)
您可以使用filler field忽略记录开头的双引号。这定义了一个填充字段,我名义上称为quote
,它由第一个"
终止:
options (skip=1)
load data
truncate into table t42
fields terminated by ' '
(
quote filler terminated by '"',
cust_id,
cust_name,
cust_level terminated by '"'
)
在这种情况下,quote
字段的值将为null,但我们无论如何都忽略它,因此这并不重要。
将您的数据文件定义为:
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
。