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

-------------sql server 2000 读取.csv文件的问题----------------

在服务器上的D:\DateCSV   目录下有一个Date_new.csv文件
(目录下同时还有很多带日期的Date_new_070421.csv,Date_new_070422.csv文件)

请问在sql   server   2000中有什么办法每半小时去读取该目录下的文件Date_new.csv   再insert到数据库的表中吗?
怎么实现呢?

------解决方案--------------------
1.将目录下的csv送到临时文件中
exec master..xp_cmdshell 'dir d:\DateCSV\Date_new*.csv /b > tmp.txt '
2.取得目录下的csv文件路径存入临时表
create table #b(path varchar(200))
insert 表名
select * from OpenRowset( 'MSDASQL ', 'Driver={Microsoft Text Driver (*.txt; *.csv)};
DefaultDir=d:\DateCSV\; ', 'select * from tmp.txt ')
3.逐行读取csv文件,用2中的openrowset来插入到数据库中(动态语句实现)
------解决方案--------------------
创建作业,半小时调度执行一次。

SQL 访问csv文件可以用bcp或bulk insert。


EXEC master..xp_cmdshell 'bcp 数据库名..表名 in 文件全路径 -c -t, -S 服务名 -U 用户名(需要有写入权限) -P 密码 '


bulk insert test.dbo.tbname from 'D:\Test.csv ' with(fieldterminator= ', ',rowterminator= '\n ')


查一下联机帮助。
------解决方案--------------------
说的很清楚了,tmp.txt不存在,说明没生成这个文件。。。