|
Bat命令-->ftp获取文件,并导入数据库
1.生成ftp命令,放在ftp.txt文件夹中新建一个bat文件(1.createscript.bat)
@echo open 服务器IP >ftp.txt
@echo user 用户名>>ftp.txt
@echo 密码>>ftp.txt
@echo get 文件名 data\chargefile.txt>>ftp.txt
@echo bye>>ftp.txt
2.执行第一步生成的命令,下载ftp服务器上的文件到本地,新建一个bat文件(2.downloadlogfile.bat)
ftp -i -n -s:ftp.txt
3.从本地把数据导入到数据库中,新建一个bat文件(3.importdata.bat)
方法一:利用DTS,(Oracle数据库/SQL数据库都支持)
用SQL Server工具生成一个DTS包,保存为“文件系统”(后缀名为:dtsx),配置好后,用bat命令调用导入数据
dtexec /F "D:\transferchargedata.dtsx"
方法二:利用bcp,支持SQL Server数据库
例子:EXEC master..xp_cmdshell 'bcp Test.dbo._Temp out c:\sss.xls -c -U"sa" -P"maobisheng"' --out 为导出到文件,in为从数据库导入到数据库中
EXEC master..xp_cmdshell 'bcp Test.dbo._Temp out c:\ sss _%date:~0,10%-%time:~0,2%.txt -c -U"sa" -P"maobisheng"' --文件名动态产生
方法三:利用sqlldr命令,支持Oracle
新建一个后缀名为ctl的文件,如:sqlldr.ctl
load data
infile 'D:\sqlldr\chargefile.txt'
badfile 'D:\sqlldr\chargefile_bad.bad'
discardfile 'D:\sqlldr\chargefile_dsc.dsc'
truncate into table tbgamechargelog
fields terminated by X'09'
(PTID,CHARGEDATETIME,GAMENO,GAMEAREANO,CHARGEAMOUNT)
命令:
sqlldr userid=用户名/密码@数据库名 control=d:\sqlldr\sqlldr.ctl log='D:\sqlldr\logfile\%date:~0,10%-%time:~0,2%-%time:~3,2%-%time:~6,2%.log'
方法四:可以利用LogParser导入数据,支持SQL数据库
"C:\Program Files\Log Parser 2.2\LogParser.exe" "select * into Test.dbo._Temp from 'D:\2010-01-10 23.log'" -o:sql -database:Test -i:tsv -iCodepage:65001
4.写一个总的bat文件,调用前三个bat:
call 1.createscript.bat
call 2.downloadlogfile.bat
call 3.importdata.bat
exit
这样,只要新建一个计划,调用总的那个Bat命令文件,就能实现每天定时从Ftp文件服务器上拉文件,并把数据导入到数据库中。
|
|