应公司策划要求,需要一个数据库按表导入导出的工具配合svn来进行差异匹配,方便策划每天对数据库修改的记录工具,我使用bcp命令实现如下批处理工具,中间踩了不少坑,现保存在这边希望可以帮到需要此工具的同学。
::数据库地址
set ip=127.0.0.1
::数据库帐号
set login=sa
::数据库密码
set passward=Passward
::数据库名称
set dataBase=MyDBName
::保存txt文件的路径
set filePath=d:\data\
::导入到数据库 (这边的way注释掉上面的in则是从数据库导出到txt,注释掉下面的则是从txt导入到数据库)
::set way=in
::导出到txt文本
set way=out
::这边先创建文件夹,按个人需求改
md %filePath%
::这边填写数据库表名
set dataTable=table1 table2 table3 table4 table5 table6
::这边是根据导入还是导出进行一个删除数据库表的操作,因为bcp导入到数据库时如果原先数据库有数据会出现重复键不让插入的错误导致插入失败
if %way% == in (for %%i in (%dataTable%) do osql -S %ip% -U%login% -P%passward% -Q "TRUNCATE TABLE %dataBase%..%%i" )
::这边是一个表数据的导入导出操作,使用bcp命令
for %%i in (%dataTable%) do bcp %dataBase%..%%i %way% %filePath%%%i.txt -c -S %ip% -U%login% -P%passward%
pause
将代码复制到txt文件中,修改相应参数,保存文件为bat格式即可使用,sqlserver 2008 sqlserver2012测试可使用
bcp命令需要安装SQLManagementStudio工具,关于工具就不再描述了,网上可以搜到很多资料