SQL Server Management Studio 2012-экспорт всех таблиц базы данных в формате csv
У меня есть база данных в SQL Server с большим количеством таблиц и хочу экспортировать все таблицы в формате csv. Из очень похожего вопроса, заданного ранее -экспорт из SQL Server 2012 в .CSV через Management Studio
щелкните правой кнопкой мыши на базе данных в management studio и выберите задачи - > экспортировать данные...
следуйте указаниям Мастера и в целевой части выберите " плоский файл Назначения'. Введите имя файла и выберите опции.
то, что я хочу, это возможность экспортировать все таблицы сразу. Мастер импорта и экспорта SQL Server разрешает только одну таблицу за раз. Это довольно громоздко, если у вас очень большая база данных. Я думаю, что более простое решение может включать в себя написание запроса, но не уверен.
5 ответов
мастер экспорта разрешает только по одному за раз. Я использовал сценарий powershell для экспорта всех моих таблиц в csv. Пожалуйста, попробуйте это, если это поможет вам.
$server = "SERVERNAME\INSTANCE"
$database = "DATABASE_NAME"
$tablequery = "SELECT name from sys.tables"
#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])]"
#Specify the output location of your dump file
$extractFile = "C:\mssql\export$($Row[0]).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
}
спасибо
вместо нажатия Export Data
выберите Generate Scripts
. Выберите нужные таблицы, нажмите кнопку Далее и нажмите кнопку . Последний вариант в разделе General
is Types of data to script
. Выбрал Schema and data
или просто Data
.
комментарий к решению @annem-srinivas: Если вы используете схемы, отличные от стандартных (dbo), измените в его скрипте следующее:
$tablequery = "SELECT schemas.name as schemaName, tables.name AS tableName from sys.tables INNER JOIN sys.schemas ON schemas.schema_id
= tables.schema_id ORDER BY schemas.name, tables.name"
и
$queryData = "SELECT * FROM [$($Row[0])].[$($Row[1])]"
$extractFile = "C:\temp\export$($Row[0]).$($Row[1]).csv"
ответ sree велик. Для моей БД, потому что есть несколько схем, я изменил это:
$tablequery = "SELECT schemas.name as schemaName, tables.name as tableName from sys.tables inner join sys.schemas ON tables.schema_id = schemas.schema_id"
а затем и
$queryData = "SELECT * FROM [$($Row[0])].[$($Row[1])]"
#Specify the output location of your dump file
$extractFile = "C:\mssql\export$($Row[0])_$($Row[1]).csv"
1-й способ
вы можете реплицировать схему в временную базу данных, а затем использовать эту базу данных для экспорта всех таблиц (вместе с именами столбцов).
действия:
1) сначала создайте скрипт для всех таблиц:
Задачи - > создание скриптов - >все таблицы - >один файл sql
2) Создайте фиктивную базу данных и запустите этот скрипт.
3) щелкните правой кнопкой мыши на фиктивной базе данных и выберите задачи- > экспорт данных - > выберите источник данные - > выберите пункт назначения как Microsoft Excel и укажите его путь - >выполнить
вы получите одну электронную таблицу со всеми таблицами и ее столбцами.
2-й способ
выполнить ниже запрос, он даст все имена таблиц в 1-м столбце вместе с соответствующими именами столбцов во 2-м столбце результата.
select t.name ,c.name from sys.columns c
inner join sys.tables t
on t.object_id = c.object_id
order by t.name
скопируйте этот результат и вставьте его в CSV.