BCP 命令行导出导入【次快,通用】
适用场景
没有企业版,无法用在线索引重建;
跨服务器 / 跨版本迁移;
需灵活筛选数据(如只迁移 MaxInTime>2026-01-01 的数据)。
操作步骤
步骤 1:导出源表数据到本地文件(CMD 命令行)
# 导出(UTF-8编码,批量大小10万,提升速度) bcp 源数据库名.dbo.TBLESIItemLogLot_bak out E:\BCP\ItemLogLot.dat -S 本地服务器名 -U sa -P 密码 -n -b 100000 -q # 若需筛选数据(只导出MaxInTime>2026-01-01),用query参数: bcp "SELECT * FROM 源数据库名.dbo.TBLESIItemLogLot_bak WHERE MaxInTime > '2026-01-01'" queryout E:\BCP\ItemLogLot_filter.dat -S 本地服务器名 -U sa -P 密码 -n -b 100000 -q
步骤 2:导入到 MES_BAK 库
# 导入(先在MES_BAK库创建结构一致的空表) bcp MES_BAK.dbo.TBLESIItemLogLot_bak in E:\BCP\ItemLogLot.dat -S 本地服务器名 -U sa -P 密码 -n -b 100000 -q -E
参数说明
-n:使用本机数据类型(最快的导出格式);
-b 100000:每批 10 万行,平衡内存和速度;
-q:处理包含特殊字符的表名 / 库名;
-E:保留自增列的值(如有)。
优势 & 注意事项
速度快:2 亿行数据约 30 分钟~1 小时(取决于磁盘 IO);
无需企业版,所有 SQL Server 版本支持;
建议在服务器本地执行(避免网络传输),用 SSD 存储导出文件。
本文为宁若水!原创文章,转载无需和我联系,但请注明来自[若水]博客 www.lalaya.net
