1问题:我试图加载test1.csv,test2.csv和test3.csv到表1,表2和表3分别使用SQLLDR。如果知道这方面的知识,请耐心等待,如果在.ctl文件中定义这个问题时我无法完全理解,只有我能想到的是下面的代码,但这是不正确的。所以我的问题是我怎么能做到这一点或者这是可能的?SQLLDR - 如何加载多个CSV到multple表
OPTIONS (SKIP=1)
LOAD DATA
INFILE 'test1.csv'
INFILE 'test2.csv'
INFILE 'test2.csv'
TRUNCATE
INTO TABLE table1
fields terminated by ',' optionally enclosed by '"'
TRAILING NULLCOLS
(
Col1 "TRIM(:Col1)",
Col2 "TRIM(:Col2)"
)
INTO TABLE table2
fields terminated by ',' optionally enclosed by '"'
TRAILING NULLCOLS
(
Colx "TRIM(:Colx)",
Coly "TRIM(:Coly)"
)
INTO TABLE table3
fields terminated by ',' optionally enclosed by '"'
TRAILING NULLCOLS
(
Colp "TRIM(:Colp)",
Colq "TRIM(:Colq)"
)
第二个问题:这是第一个问题的替代方案。由于我无法弄清楚第一个问题,我所做的就是将每个表的负载拆分为多个.ctl文件,并将这三个文件全部调用到.bat文件中。这至少起作用,但我的问题是有没有办法在会话中处理所有这3个.ctl文件,而不提及用户/密码3次?
sqlldr userid=user/[email protected] control=test1.ctl
sqlldr userid=user/[email protected] control=test2.ctl
sqlldr userid=user/[email protected] control=test3.ctl
是否已经存在或可以在数据中添加一个指示器字段,用于键入数据应该发送到哪个表上? –
我没有使用任何列作为区分数据的关键,但我可以通过添加密钥进行尝试。 – Chito