如何使用 sqlldr 将单个文件 (.csv) 列映射到多个 table 列
How to map single file(.csv) column to multiple table columns using sqlldr
我有一个文件 (.csv) 包含列 A1、A2、A3,Table 包含列 T1、T2、T3、T4、T5。
我想将数据从 A2 列映射或插入到 T2、T3,T4.I 我能够插入到
T2 和 T3 在控制文件 (.ctl) 中使用 desc_skip FILLER POSITION(1) 但在 T4 中不使用。
你能帮我吗 如何将单个文件列值插入多个
table 中的两列使用 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",
...
P.S。我无法想象什么可以 'not working'。我的例子:
数据库:
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/password@db 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
不就是你要求的吗?
我有一个文件 (.csv) 包含列 A1、A2、A3,Table 包含列 T1、T2、T3、T4、T5。
我想将数据从 A2 列映射或插入到 T2、T3,T4.I 我能够插入到 T2 和 T3 在控制文件 (.ctl) 中使用 desc_skip FILLER POSITION(1) 但在 T4 中不使用。 你能帮我吗 如何将单个文件列值插入多个 table 中的两列使用 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",
...
P.S。我无法想象什么可以 'not working'。我的例子:
数据库:
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/password@db 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
不就是你要求的吗?