使用unix脚本读取分隔符文件并在DB中加载

时间:2015-05-11 11:29:21

标签: unix

我试图提取具有.txt文件的tar文件,然后读取.txt文件分隔的.txt文件。并将其加载到Oracle DB中。我能够解压缩文件但是当它到达"做/home/uid/test/dataTest.sql"。它说无法执行。

以任何方式阅读.txt文件,用" |"并在不使用sqlldr的情况下将其加载到oracle DB

是"加载数据infile"可以像在MySQL中一样直接在Oracle中使用而不使用sqlldr ??

**//testScript.sh**
tar -xvf test.tar
[ -f "/home/uid/test/ref.txt" ] && echo "File present" || exit 1
while read line
do
/home/uid/test/dataTest.sql
done < /home/uid/test/ref.txt
##Here connect the DB to insert 
sqlldr -s username/pwd@//hostname:portNumb <<EOF
set scan off;
@/home/uid/test/dataTest.sql
exit;
EOF

**//dataTest.sql**
load data
infile '/home/uid/test/ref.txt'
into table STAGE1
fields terminated by "|"
( NAME, NUMB, FILENAME );

 **//ref.txt** 
 Suraj R Krishna, SF|1234598|2015FEB_Suraj R Krishna, SF(xxxxx4598)
 Krish S Sampson, TE, SRFT|1234934|2015FEB_Krish S Sampson, TE, SRFT          
 (xxxxx4934)

感谢您的任何帮助! 谢谢!

1 个答案:

答案 0 :(得分:1)

读取行时删除 做 /home/uid/test/dataTest.sql 完成&lt; /home/uid/test/ref.txt 与

  

sqlldr ${USERNAME}/${PASSWORD}@${DATABASENAME} SILENT=HEADER,FEEDBACK control=/home/uid/test/dataTest.sql LOG=<name>

/home/uid/test/dataTest.sql看起来像一个Control文件。