admin

SQL Server Management Studio 2012-将数据库的所有表导出为csv

sql

我在SQL Server中有一个数据库,其中有很多表,并希望以csv格式导出所有表。

右键单击Management Studio中的数据库,然后选择“任务”->“导出数据…”。

遵循向导,然后在目标部分中选择“平面文件目标”。输入您的文件名,然后选择您的选项。

我想要的是能够一次导出所有表的功能。SQL
Server导入和导出向导一次只允许一个表。如果您有一个非常大的数据库,这将非常麻烦。我认为更简单的解决方案可能涉及编写查询,但不确定。


阅读 215

收藏
2021-05-10

共1个答案

admin

导出向导一次只允许一个。我使用powershell脚本将所有表导出到csv中。如果可以帮助您,请尝试此操作。

$server = "SERVERNAME\INSTANCE"
$database = "DATABASE_NAME"
$tablequery = "SELECT schemas.name as schemaName, tables.name as tableName from sys.tables inner join sys.schemas ON tables.schema_id = schemas.schema_id"

#Delcare Connection Variables
$connectionTemplate = "Data Source={0};Integrated Security=SSPI;Initial Catalog={1};"
$connectionString = [string]::Format($connectionTemplate, $server, $database)
$connection = New-Object System.Data.SqlClient.SqlConnection
$connection.ConnectionString = $connectionString

$command = New-Object System.Data.SqlClient.SqlCommand
$command.CommandText = $tablequery
$command.Connection = $connection

#Load up the Tables in a dataset
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $command
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$connection.Close()



# Loop through all tables and export a CSV of the Table Data
foreach ($Row in $DataSet.Tables[0].Rows)
{
    $queryData = "SELECT * FROM [$($Row[0])].[$($Row[1])]"

    #Specify the output location of your dump file
    $extractFile = "C:\mssql\export\$($Row[0])_$($Row[1]).csv"

    $command.CommandText = $queryData
    $command.Connection = $connection

    $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
    $SqlAdapter.SelectCommand = $command
    $DataSet = New-Object System.Data.DataSet
    $SqlAdapter.Fill($DataSet)
    $connection.Close()

    $DataSet.Tables[0]  | Export-Csv $extractFile -NoTypeInformation
}

谢谢

2021-05-10