2025年4月22日 星期二 乙巳(蛇)年 正月廿三 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > DOS/BAT与(脚本)

批量处理BCP导入文件到数据库

时间:02-02来源:作者:点击数:18

今天接到个任务,csv文件导入到数据库中。

心想小case,结果一看惊呆了,有上万个数据文件,每个文件中有几万条数据。

效率问题是要考虑的首要因素。

因为之前做过BCP导入,脑海中立马有了思路:循环所有文件,执行BCP命令就可以了吧,决定把它做成个bat批处理。

过程当中遇到的几个问题,mark下:

1. CSV文件中的内容格式(是用,分割还是空格分隔),否则执行BCP导入时候会提示相应的错误

2. 蛋疼的bat语法

场景:

1. 上万个数据文件

2. 导入Sqlserver

3. 同时记录log文件

实现代码:

批量导入数据文件的批处理代码如下:(保存为input.bat)

  • @echo off
  • setlocal enabledelayedexpansion rem 设定变量延迟的效果,为了下面的计数 !sum!
  • set DestPath=D:\tools\Bcp\csv
  • set DestExt=*.csv rem 模糊检索.csv文件
  • set /a sum=0
  • for /f "delims=" %%i in ('dir /b/a-d/s %DestPath%\%DestExt%') rem 循环指定文件夹下的文件,注意dir 后面的参数
  • do (
  • echo, rem 输出空行(效率高)
  • set /a sum+=1
  • echo ------------------------------------!sum!------------------------------------
  • echo %%i
  • bcp Mydb.dbo.TB_Test in %%i -t "\," -c -S 172.168.1.2 -U sa -P 123456 rem BCP导入数据文件到数据库,一定要主要格式-t -c,符合你的文本格式,否则导入报错
  • )
  • pause

把执行的log记录下来,可以另外新建个bat文件,调用上面创建的bat,如下实现:

  • call input.bat => aa.log
  • echo "Complete!!!"
  • pause

结果:

2万多个数据文件,导入了总共2.7亿数据,用时1个小时左右,还是蛮快的

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐