首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

请问怎么通过代码将.bcp数据文件导入到sql的表中

2012-08-11 
请教如何通过代码将.bcp数据文件导入到sql的表中每天都会有两张c_20120705.bcp和s_20120705.bcp的文件需要

请教如何通过代码将.bcp数据文件导入到sql的表中
每天都会有两张c_20120705.bcp和s_20120705.bcp的文件需要导入到sql的数据库中,并且以同样的名字生成表。

我采用的办法是利用sql提供的导入和导出数据的工具,具体步骤是:
1、数据源选择:文本文件,文件名选择c_20120705.bcp。点下一步
2、其他都不变化,就是行分隔符选{LF},点下一步
3、制定列分隔符为:制表符。点下一步
4、其他默认一直点下去就ok了
 
由于每天都要做这样的操作,所以希望能用代码自动实现,请指教。


[解决办法]

SQL code
/******* 导出到excel */EXEC master..xp_cmdshell 'bcp SettleDB.dbo.shanghu out c:\temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P""' /*********** 导入Excel */SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions /*动态文件名 declare @fn varchar(20),@s varchar(1000) set @fn = 'c:\test.xls' set @s ='''Microsoft.Jet.OLEDB.4.0'', ''Data Source="'+@fn+'";User ID=Admin;Password=;Extended properties=Excel 5.0''' set @s = 'SELECT * FROM OpenDataSource ('+@s+')...sheet1$' exec(@s) */ SELECT cast(cast(科目编号 as numeric(10,2)) as nvarchar(255))+' ' 转换后的别名 FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions /********************** EXCEL导到远程SQL */insert OPENDATASOURCE( 'SQLOLEDB', 'Data Source=远程ip;User ID=sa;Password=密码' ).库名.dbo.表名 (列名1,列名2) SELECT 列名1,列名2 FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
[解决办法]
1,你的文件是否都存在于一个特定的目录里。
使用管理员权限可以使用xp_cmdshell扩展过程。
xp_cmdshell 可以执行dos的dir命令,得到该目录下的文件。

然后再循环得到的文件,
动态拼接语句,动态执行BCP 或 BULK INSERT语句。

热点排行