日期:2014-05-18  浏览次数:20441 次

SQL自动导入按日期排序文件名问题
我这一个FTP上会每天生成一些文本,文本名字是按照日期来命名的,我想把它导入数据库里面去。
一个一个导入太麻烦了,所以想怎么样才能连续导入
用XML把文本先格式化了

FTP上的文本命名为hl.2012-2-3-active.txt 这样的,日期会变化
百度了半天写出个这么来,但是导入不进去
导入的表有三个字段 phone,city ,activetime 其中activetime就是文件里面的日期
文本里有两个字段,phone,city

declare @i datetime ,@d varchar(10),@p varchar(100)

set @i='2012-2-1'

while @i<'2012-2-26'
begin 
set @d=convert(varchar(10),@i,120)
set @p='''D:\工作文档\数据\报表\HL.'+@d+'-active.txt'+''''

INSERT INTO jxyx_active2(phone,city,activetime)
SELECT phone,city,@d FROM OPENROWSET(bulk @p,FORMATFILE='E:\xml\jxyx\jxyx.xml',FIRSTROW=2) AS T;

set @i=@i+1
end 

报错说 @p附近有语法错误,应该为string 或text_lex
比较郁闷啊。


------解决方案--------------------
declare @dateTime datetime
declare @i int
declare @size int
declare @strTime varchar(10)
declare @filename varchar(100)
declare @value varchar(300)
set @dateTime=CONVERT(datetime,'2012-02-01')
set @i=1
set @size=20

while @i<=@size
begin
set @strTime=CONVERT(varchar(10),@dateTime,120)
set @dateTime= dateadd(DAY,1,@dateTime)
set @filename='D:\工作文档\数据\报表\HL.'+@strTime+'-active.txt'
set @value='bcp "Task..als01" in '+@filename+' -c -q -t \t -r \n -S 服务器名称 -U 登录用户名称 -P 密码'

EXEC master..xp_cmdshell @value
INSERT INTO jxyx_active2(phone,city,activetime)
select * from als01
delete als01
set @i=@i+1
end