首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL* Loader映射不同表列中的DataFile字段

SQL* Loader映射不同表列中的DataFile字段
EN

Stack Overflow用户
提问于 2018-06-14 05:37:23
回答 1查看 507关注 0票数 0

我正在尝试从不同表的数据文件中加载数据,我阅读了很多关于字段声明和定界的内容(Position(n:n ),以结尾)。关键是我不确定该怎么做我需要做的事情。让我用一个例子来解释这一点。

我有两个表(person,phone):person_table( person_id_pk,person_name) - phone_table(person_id_pk,phone)

我有一个数据文件,其中包含:

代码语言:javascript
复制
$ datafile.txt
1,jack pierson,+13526985442
2,Katherine McLaren,+15264586548

我的观点是,当我声明我的ConfigFile.ctl时,我如何指定数字段3(电话字段)应该插入或附加到"phone_table“中,而另外两个字段(person_id,person_name)应该插入或附加到"person_table”中

考虑到字段的长度不固定,我的参考就是字段的位置。(字段数据文件位置)

我想试试像这样的东西

代码语言:javascript
复制
$configfile.ctl
LOAD DATA
INFILE datafile.txt
APPEND
INTO TABLE person_table
(
  person_id_pk POSITION (*)   INTEGER EXTERNAL TERMINATED BY "," ,
  person_name POSITION(*+1) CHAR(30) TERMINATED BY "," 
)

INTO TABLE phone_table
(
  person_id_fk POSITION (*) INTEGER EXTERNAL TERMINATED BY ","
  phone ------> Right here is my point, how can I specify to SQL Loader than here 
                should be the field number 3 from datafile
)

我希望你们能明白我的意思。这对我来说是个大问题,因为我要处理的CSV文件包含60、80、甚至100个字段(基于Excel文件的列)。并且每个字段或字段组可以在不同的表中。

我真的很感谢你能给我的指导和帮助。我可能对我的示例和控制文件声明有误,我还没有实现任何东西。所以我对你给我的每一个建议都持开放态度。

EN

回答 1

Stack Overflow用户

发布于 2018-06-14 06:29:05

您的控制文件应该如下所示。第二个"INTO TABLE“使用POSITION(1)将逻辑”指针“移回当前行的开头,以便可以再次读取它。然后,通过将其定义为填充符来跳过该名称。

代码语言:javascript
复制
LOAD DATA
INFILE datafile.txt
APPEND
INTO TABLE person_table
FIELDS TERMINATED BY "," TRAILING NULLCOLS
(
  person_id_pk  INTEGER EXTERNAL,
  person_name   CHAR(30) 
)

INTO TABLE phone_table
FIELDS TERMINATED BY "," TRAILING NULLCOLS
(
  person_id_fk POSITION(1) INTEGER EXTERNAL,
  x_name       FILLER,
  phone        CHAR(12)
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50846641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档