linux sqlload 管道,采用SHELL,通过SQL LOAD导入一定格式的txt文件至数据库中

1。 准备工作,window中可直接通过sqlload直接导入文件,linux下,需要有sqlload的相关软件。

2。 SQL脚本

load data

CHARACTERSET ZHS16GBK

infile *

into table S_BAD_STATISTIC_LOG

APPEND

fields terminated by '|'

(

SSL_ID,

IMSI,

TELEPHONE,

VERSION,

TYPE,

CREATE_TIME timestamp "yyyy-mm-dd hh24:mi:ss",

FLAG,

CITY_CODE

)

3。 shell脚本

#!/bin/sh

#获取当前目录

currDir=`dirname $0`

cd $currDir

currDir=`pwd`

#数据库连接串

dbConnStr=cms/icity1217@icitydb

#数据文件保存目录

dataDir=$currDir/data

#控制文件

controlFile=$currDir/sqlldr.ctl

#设置环境变量

#ORACLE_HOME=/opt/oracle/product/10201

#PATH=$PATH:$ORACLE_HOME/bin

#日志根目录

baseLogDir=$currDir/log

#插入失败数据的记录的目录

badLogDir=$baseLogDir/bad

#执行日志目录

impLogDir=$baseLogDir/imp

#命令执行日志目录

cmdLogDir=$baseLogDir/cmd

#创建日志目录

mkdir -p $badLogDir 2> /dev/null

mkdir -p $impLogDir 2> /dev/null

mkdir -p $cmdLogDir 2> /dev/null

for dataFile in `ls ${dataDir}/*.txt`

do

logDateSuffix=`date "+%Y%m%d%H%M%S"`

sqlldr $dbConnStr \

data=$dataFile \

log=$impLogDir/`basename ${dataFile}`.$logDateSuffix.imp \

bad=$badLogDir/`basename ${dataFile}`.$logDateSuffix.bad \

control= $controlFile \

errors= 9999999

> /dev/null \

2>> $cmdLogDir/`basename ${dataFile}`.${logDateSuffix}.log

done

4。 txt格式文件

40240884|460036100451807| |421|1|2013-08-14 10:00:00| |

40240925|460029591429558| |632|1|2013-08-14 10:00:00| |3501

40240926|460030138021475| |632|1|2013-08-14 10:00:00| |

40240927|001a9570110c| |632|1|2013-08-14 10:00:00| |

40240928|460009416045734| |632|1|2013-08-14 10:00:00| |

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值