Sql Server数据库较大时,备份整库文件较慢。使用 BCP 既可以快速大容量导出库表数据到txt文档中,也可以快速导入本地数据文件。本文介绍了使用BCP进行数据备份和导入的方法。
备份
新建txt文档,复制粘贴下方代码块。其中,@echo off用于关闭回显,echo … 为辅助显示部分。
@echo off
set database=phoenix
set db_server=127.0.0.1
set user=sa
set password=password
echo Start bcping out %database%...
set start=%time%
echo cuurent path %cd%
echo ============== Config==============
bcp %database%..Equipment out Equipment.txt -S%db_server% -c -U%user% -P%password%
echo Finish bcp ing out %database%
echo %start% ~ %time%
PAUSE
需要修改set部分的数据库名称、数据库服务器ip地址、数据库登录用户名、数据库登录密码;
需要修改核心语句:
bcp %database%…Equipment out Equipment.txt -S%db_server% -c -U%user% -P%password%
该语句用于导出数据库中的Equipment表的全部内容到Equipment.txt中,后续可用于数据导入。
根据实际表名进行修改,若需要复制其它表,再复制该行语句即可。
如:
bcp %database%..Equipment1 out Equipment1.txt -S%db_server% -c -U%user% -P%password%
bcp %database%..Equipment2 out Equipment2.txt -S%db_server% -c -U%user% -P%password%
修改完成后将txt文档重命名为xx.bat文件,执行即可(注意保证和服务器网络是通的)。
导入
和导出操作类似,注意该批处理文件会先执行删除原表内容,再将本地的数据文件进行导入,请确认是否操作再进行执行。完整代码块如下:
@echo off
set database=phoenix
set db_server=127.0.0.1
set user=sa
set password=passowrd
echo Start bcping in %database%...
set start=%time%
echo cuurent path %cd%
echo ==============classify==============
Osql -S%db_server% -d%database% -U%user% -P%password% -Q"delete from Equipments"
bcp %database%..Equipments in Equipments.txt -S%db_server% -c -U%user% -P%password%
echo Finish bcp ing in %database%
echo %start% ~ %time%