我有一种情况需要将几个表从一个SQL Server数据库复制到一个单独的SQL Server数据库。数据库都在同一个实例上。我正在复制的表包含至少450万行,大小约为40GB。
之前我曾使用过BCP,但对它并不是很熟悉,而且无法找到任何关于你是否可以使用BCP直接从一个表复制到另一个表而无需在两者之间写入文件的文档。
这可能吗?如果是这样,怎么样?
编辑:我们之所以没有使用简单的INSERT是因为我们在服务器上的日志驱动器上的空间有限,这在尝试INSERT时几乎立即消失。我们确实尝试了,但是当日志驱动器填满时,查询很快就减慢了蜗牛的速度。答案 0 :(得分:6)
我正在使用bcp.exe来实现表级备份
要导出:
bcp "select * from [MyDatabase].dbo.Customer " queryout "Customer.bcp" -N -S localhost -T -E
导入:
bcp [MyDatabase].dbo.Customer in "Customer.bcp" -N -S localhost -T -E -b 10000
如您所见,您可以根据任何查询进行导出,因此您甚至可以使用此进行增量备份。
答案 1 :(得分:2)
BCP用于转储/读取文件。使用DTS / SSIS从一个DB复制到另一个DB。
以下是MSDN上的BCP docs
答案 2 :(得分:2)
SQL导入/导出向导将执行此任务...只需连接两次到同一个数据库(源和目标)并将一个表复制到其他(空和索引),您可能希望指示忽略自动数字Id键字段if存在。这种方法适用于超过1M +记录的表。