我有多个文件(f1.log,f2.log,f3.log等)
每个文件都包含;
& =
分隔格式。 (新行由;
分隔,字段由=
分隔,例如。
f1的数据:
1=a;2=b;3=c
f2的数据:
1=p;2=q;3=r
我需要阅读所有这些文件并将数据导入表格格式:
filename number data
f1 1 a
f1 2 b
f1 3 c
f2 1 p
[...]
我是SQL新手。你能指导我,怎么办?
答案 0 :(得分:3)
使用SQL*Loader将文件放入表格中。假设你创建的表有点像:
create table FLOG
(
FILENAME varchar2(1000)
,NUM varchar2(1000)
,DATA varchar2(1000)
);
然后您可以使用以下控制文件:
LOAD DATA
INFILE 'f1.log' "str ';'"
truncate INTO TABLE flog
fields terminated by '=' TRAILING NULLCOLS
(
filename constant 'f1'
,num char
,data char
)
但是,每个文件都需要不同的控制文件。这可以通过使用shell脚本动态生成控制文件来完成。示例shell脚本可以是:
cat >flog.ctl <<_EOF
LOAD DATA
INFILE '$1.log' "str ';'"
APPEND INTO TABLE flog
fields terminated by '=' TRAILING NULLCOLS
(
filename constant '$1'
,num char
,data char
)
_EOF
sqlldr <username>/<password>@<instance> control=flog.ctl data=$1.log
保存为flog.sh
然后可以像:
./flog.sh f1
./flog.sh f2