我正在使用SQLOADER将多个csv文件加载到1个表中。 这是我的ctl文件的内容
load data
append
into table SAMP_TABLE
fields terminated by ','
OPTIONALLY ENCLOSED BY '"' AND '"'
trailing nullcols
( COLUMN1 CHAR(4000),
COLUMN2 CHAR(4000),
COLUMN3 CHAR(4000)
)
这是我的批处理文件
@echo off
for %%F in ("C:\Users\test\*.csv") do (
sqlldr username/pw@dbip CONTROL='C:\Users\test\test2.ctl' LOG='C:\Users\test\TEST.log' "DATA=%%F"
)
pause
我的所有csv文件,控制文件和批处理文件都在同一目录中。 我有两个csv文件,相同的列只有不同的内容。问题 现在它只导入第一个csv文件而不是第二个,我不知道为什么..?如果有人能告诉我我做错了什么,我将不胜感激
答案 0 :(得分:0)
您只需提供多个infile
次请求
load data
infile 'data1.csv'
infile 'data2.csv'
...
infile 'datan.csv'
append
into table TABLE1
fields terminated by ','
OPTIONALLY ENCLOSED BY '"' AND '"'
trailing nullcols
( COLUMN1 CHAR(4000),
COLUMN2 CHAR(4000),
COLUMN3 CHAR(4000)
)
如果文件始终存在于同一文件夹中
infile /path/*.csv
答案 1 :(得分:0)
您好,这是我的问题的解决方案:
@echo off
IF NOT EXIST C:\Users\test\%date:~-10,2%"-"%date:~-7,2%"-"%date:~-4,4% md C:\Users\test\%date:~-10,2%"-"%date:~-7,2%"-"%date:~-4,4%
for %%F in ("C:\Users\test\*.csv") do (
sqlldr dbuser/dbpw@dbip CONTROL='C:\Users\test.ctl' LOG='C:\Users\test\%date:~-10,2%"-"%date:~-7,2%"-"%date:~-4,4%\%date:~-10,2%"-"%date:~-7,2%"-"%date:~-4,4%.log' "DATA=%%F" skip=1
move %%F C:\Users\test\%date:~-10,2%"-"%date:~-7,2%"-"%date:~-4,4%
)
pause