如何使用sqlldr将单个文件(.csv)列映射到多个表列使用sqlldr
我有一个文件(.csv)包含列A1,A2,A3,并且表具有列T1,T2,T3,T4,T5。如何使用sqlldr将单个文件(.csv)列映射到多个表列使用sqlldr
我要地图或插入从A2列数据以T2,T3,T4.I是能够插入到 T2和T3使用FILLER desc_skip位置(1)中的控制文件(.CTL),但不是在T4。 你能帮我吗如何将单个文件列值插入到多于 表中的两列使用sqlldr。
请在下面找到我正在使用的控制文件。
LOAD DATA
INTO TABLE EMP
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
"T1" INTEGER ,
"T2" CHAR,
desc_skip FILLER POSITION(1),
"T3" CHAR,
"T4" CHAR,
"T5" INTEGER
)
在此先感谢。
您应该使用类似的东西来
...
T2 char,
T3 expression ":T2",
T4 expression ":T2",
...
附:我无法想象什么可以'不工作'。我的例子:
数据库:
SQL> create table t$loader (t1 varchar2(10), t2 varchar2(10), t3 varchar2(10), t4 varchar2(10), t5 varchar2(10));
Table created
CSV文件:
echo 1,2,3 > csv.csv
echo 4,5,6 >> csv.csv
echo 7,8,9 >> csv.csv
控制文件:
load data
infile 'csv.csv'
into table t$loader
fields terminated by ','
(
t1 char,
t2 char,
t3 expression ":t2",
t4 expression ":t2",
t5 char
)
运行:
sqlldr userid=user/[email protected] control=csv.ctl
结果:
SQL> select * from t$loader;
T1 T2 T3 T4 T5
---------- ---------- ---------- ---------- ----------
1 2 2 2 3
4 5 5 5 6
7 8 8 8 9
是不是你要求的?
Hi Sanders,谢谢你的回复。但它是行不通的。请你帮助我如何通过在.ctl文件中配置将A2列值复制到T2,T3,T4列。 – Mahesh
谢谢桑德斯。它的工作now.Thank你很 – Mahesh
TRAILING NULLCOLS ( “T1” INTEGER外部NULLIF “T1”= BLANKS, \t “T2” CHAR NULLIF “T2”= BLANKS, \t “T3” CHAR NULLIF “T3”= BLANKS “:T2”, \t“T4”INTEGER EXTERNAL NULLIF“T4”= BLANKS, \t“T5”INTEGER EXTERNAL NULLIF“T5”= BLANKS“:T4”)Hi Sanders,我在Java程序中使用时遇到问题, sqlldr命令插入upto T3列only.copy选项(“:T2”)正常工作。它正在跳过T4和T5。你能帮忙吗? – Mahesh
这还不清楚。你想在三列中填充相同的值吗?或以某种方式拆分数据? – APC
是希望在三列中填充相同的值。 – Mahesh