I have a database in SQL Server with a lot of tables and wish to export all tables in csv format. From a very similar question asked previously – Export from SQL Server 2012 to .CSV through Management Studio
Right click on your database in management studio and choose Tasks -> Export Data…
Follow a wizard, and in destination part choose ‘Flat File Destination’. Type your file name and choose your options.
What I want is the capability to export all tables at once. The SQL Server Import and Export Wizard only permits one table at a time. This is pretty cumbersome, if you have a very big database. I think a simpler solution might involve writing a query, but not sure.
Advertisement
Answer
The export wizard allows only one at a time. I used the powershell script to export all my tables into csv. Please try this if it helps you.
$server = "SERVERNAMEINSTANCE" $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:mssqlexport$($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 }
Thanks