免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 邪气丨战魄
打印 上一主题 下一主题

[文本处理] 想通过shell脚本,读取txt文件,插入到Oracle数据库中,求大神帮忙啊 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2014-07-23 14:37 |只看该作者
回复 6# li0924   

你写的那个a.ctl 文件,还用我自己写么?直接用就行?


   

论坛徽章:
0
12 [报告]
发表于 2014-07-23 15:13 |只看该作者
关注Shell_HAT大侠的办法。我就只会用6楼说的sqlldr导。

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
13 [报告]
发表于 2014-07-23 15:20 |只看该作者
回复 10# 邪气丨战魄
  1. filename="a.txt"
  2. sqlfile="test.sql"
  3. dos2unix $filename
  4. sed 's/^/INSERT INTO table_name VALUES(/; s/\x7f./,/g; s/$/);/' $filename > $sqlfile
  5. echo exit >> $sqlfile
  6. sqlplus DB_USER/DB_PASS@DB_SID @$sqlfile
复制代码

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
14 [报告]
发表于 2014-07-23 15:26 |只看该作者
hat那个就可以了啊。

论坛徽章:
0
15 [报告]
发表于 2014-07-23 16:30 |只看该作者
测试结果:

$sed 's/^/INSERT INTO table_name VALUES(/; s/\x7f./,/g; s/$/);/' test.txt
INSERT INTO table_name VALUES(15304乛呧紖殴吷靽簵1乛74543184-1乛2014.乛20140430);
INSERT INTO table_name VALUES(19051乛呧紖殴吷靽簵2乛79247030乛2014.乛20140430);
INSERT INTO table_name VALUES(18386乛呧紖殴吷靽簵3乛16664083-3乛2014.乛20140515);
INSERT INTO table_name VALUES(22283乛呧紖殴吷靽簵4乛66731611-8乛2014.乛20140526);
INSERT INTO table_name VALUES(16616乛呧紖殴吷靽簵5乛73952011-9乛2013.乛20131021);
INSERT INTO table_name VALUES(15627乛呧紖殴吷靽簵6乛73637776-7乛2014.乛20140319);
INSERT INTO table_name VALUES(20727乛呧紖殴吷靽簵7乛7931258-3乛2014.乛20140526);
INSERT INTO table_name VALUES(17907乛呧紖殴吷靽簵8乛21440016-5乛2013.乛20130926);
INSERT INTO table_name VALUES(17778乛呧紖殴吷靽簵9乛79670089-6乛2013.乛20130819);
INSERT INTO table_name VALUES(19615乛呧紖殴吷靽簵10乛520000000027994乛2013.乛20130715);
INSERT INTO table_name VALUES(19584乛呧紖殴吷靽簵11乛75150549-9乛2013.乛20130703);
INSERT INTO table_name VALUES(25226乛呧紖殴吷靽簵12乛乛2014.乛20140701);
INSERT INTO table_name VALUES(22227乛呧紖殴吷靽簵13乛79914821-6乛2014.乛2014022;
INSERT INTO table_name VALUES(17090乛呧紖殴吷靽簵14乛72442811-7乛2013.乛2013082;
INSERT INTO table_name VALUES(17753乛呧紖殴吷靽簵15乛70219691-7乛2013.乛20130314);
INSERT INTO table_name VALUES(18513乛呧紖殴吷靽簵16乛74241519-2乛2014.乛20140607);

咋没有将^替换为逗号?奇怪

论坛徽章:
0
16 [报告]
发表于 2014-07-24 10:27 |只看该作者
回复 13# Shell_HAT

那个test.sql 是空文件么? 还是里面要写sql语句啊? 实在不懂啊,麻烦你了啊~~


   

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
17 [报告]
发表于 2014-07-24 10:51 |只看该作者
回复 16# 邪气丨战魄


把顶楼附件的那个txt文件命名为 a.txt
执行13楼的代码(除了用户名、密码、SID之外不要修改任何地方)

论坛徽章:
0
18 [报告]
发表于 2014-07-24 10:55 |只看该作者
oracle 里有专门把文本数据导入到oracle里面--------sql loader

论坛徽章:
0
19 [报告]
发表于 2014-07-24 18:04 |只看该作者
回复 17# Shell_HAT

这是我按照你的写出来的shell

#!/bin/sh
export ORACLE_HOME=/home/oracle/oracle/product/10.2.0/db_1;
export PATH=$ORACLE_HOME/bin:/home/msfldw/binPATH;
export NLS_LANG='SIMPLIFIED CHINESE_CHINA.ZHS16GBK';
export LD_LIBRARY_PATH=$ORACLE_HOME/lib;
export LANG=C;

DBUSERNAME=crs
DBPASSWORD=crs
DBNAME=msfldb
TABLENAME= "IMPORT_TEST"
FILENAME="a.txt"
SQLFILE="test.sql"

dos2unix $FILENAME
sed 's/^/INSERT INTO $TABLENAME VALUES(/; s/\x7f./,/g; s/$/);/' $FILENAME > $SQLFILE
echo exit >> $SQLFILE
sqlplus $DBUSERNAME/$DBPASSWORD@$DBNAME @$SQLFILE


运行报错

INSERT INTO $TABLENAME VALUES(22283^?.?澶..甯.ぇ?寸.?垫.?.矗浠诲.??66731611-8^2014.^20140526)
            *
ERROR at line 1:
ORA-00911: invalid character


   

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
20 [报告]
发表于 2014-07-24 20:28 |只看该作者
回复 19# 邪气丨战魄


    把 a.txt 和 test.sql 打包压缩传上来我试试
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP