如何从实时SQL Server数据库中复制许多表及其包含的数据?
我想在我的机器上获得一些基本测试数据。
我本来打算对数据库做一个简单的备份,直到我注意到它的大小超过100GB。然而,我所追求的表只是一些较小的表。然后我尝试导出到Excel,但达到65K限制(我们没有Excel 2007)
答案 0 :(得分:1)
您可以尝试使用SQL Server导入和导出向导导出数据
Here is MSDN video
您可以将其导出为平面文件
在Management Studio中,选择数据库,右键单击并选择任务 - >导出数据。在那里,您将看到导出为各种格式的选项,包括 CSV
您还可以从“查询”窗口运行查询,并将结果保存为CSV。
答案 1 :(得分:1)
您不能将实时服务器中的导出数据向导用于测试机器吗?或者使用bcp?甚至使用简单的PowerShell脚本?
$Server = "MyServer"
$ServerInstance = "$Server\MyInstance"
$database = "MyDatabase"
$BackupFile = "c:\MyBackupFile.sql"
$tables = @('TableBlah','TableBluh','TableBloh')
$server = New-Object (
'Microsoft.SqlServer.Management.Smo.Server') $ServerInstance
$scripter = New-Object ('Microsoft.SqlServer.Management.Smo.Scripter') $server
$scripter.Options.SchemaQualify = $false
$scripter.Options.ScriptSchema = $false
$scripter.Options.ScriptData = $true
$scripter.Options.NoCommandTerminator = $true
$scripter.Options.ToFileOnly = $true
$scripter.Options.FileName = $BackupFile
$ServerUrn=$server.Urn
$UrnsToScript = New-Object Microsoft.SqlServer.Management.Smo.UrnCollection
foreach ($t in $tables)
{
# Could use bcp here for dumping big tables (like archives)
# $ret = (bcp.exe "$database..$t" out `"$ConfigBackupDir\$t.bcp`"
# -S $ServerInstance -U sa -P $SAPWD -n)
$Urn = "$ServerUrn/Database[@Name='" +
$database + "']/Table[@Name='" + $t + "' and @Schema='dbo']"
$UrnsToScript.Add($Urn)
}
$scripter.EnumScript($UrnsToScript)