0

我想将客户信息表导入我的数据库。数据文件(纯文本)的结构如下所示。

"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 加载器忽略"each 之前的Cust_ID. 我应该在这里添加什么?谢谢你。

4

1 回答 1

1

您可以使用填充字段来忽略记录开头的双引号。这定义了一个我名义上称为的填充字段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.

于 2013-10-06T08:56:31.280 回答