Sql server 一次将所有SQL Server表导出为txt或csv

Sql server 一次将所有SQL Server表导出为txt或csv,sql-server,export,Sql Server,Export,我有数百个SQL Server表要导出为txt或csv,其中包含“文本限定符和分隔符。导入/导出向导一次只允许一个表 有没有更好的方法/工具/脚本一次完成这一切 谢谢导入/导出向导创建并运行一个基本SSIS包。在包中使用多个数据流任务来执行其他表。从向导中保存包并在其中复制/粘贴任务是一个好的开始。从此处开始,更改每个任务中的数据源和目标 在BIDS或SQL数据工具中工作对于这样简单的事情来说并不太糟糕 您可以使用以下方法对BCP进行操作: SELECT 'bcp [' + TABLE_SCHE

我有数百个SQL Server表要导出为txt或csv,其中包含
文本限定符和
分隔符。导入/导出向导一次只允许一个表

有没有更好的方法/工具/脚本一次完成这一切


谢谢导入/导出向导创建并运行一个基本SSIS包。在包中使用多个数据流任务来执行其他表。从向导中保存包并在其中复制/粘贴任务是一个好的开始。从此处开始,更改每个任务中的数据源和目标

在BIDS或SQL数据工具中工作对于这样简单的事情来说并不太糟糕


您可以使用以下方法对BCP进行操作:

SELECT 'bcp [' + TABLE_SCHEMA + '].[' + TABLE_NAME + '] out "' + TABLE_SCHEMA + '.' + TABLE_NAME + '.txt" -T -c -t"|" -d {DATABASE NAME} -S {SERVER NAME} -T'
FROM INFORMATION_SCHEMA.TABLES
这将为运行BCP语句的数据库中的每个表输出BCP语句。然后,您可以将这些语句复制并粘贴到命令窗口中

在上面,您希望用您环境的详细信息替换{DATABASE NAME}和{SERVER NAME},“-T”使用一个受信任的连接(即您),因此如果您需要使用特定的用户名和密码进行操作,您需要进行相应的调整。有关更多详细信息,请参阅本文


SELECT可能需要根据数据库中对象的名称进行更多的调整,但希望这能让您了解从何处/如何开始。

我看到了您的文章,也在SQL management studio中查看了导出工具,注意到它没有执行您所说的多表导出(在我的例子中是SQL management studio 2016预览版).我想也许我应该写一个快速的PowerShell脚本来完成这项工作

这至少对我来说是可行的,1.提取数据库中所有表的列表,然后2.循环遍历所有表,3.从表中选择并导出到预定义位置的csv

我通过windows 10上的PowerShell ISE执行,PowerShell版本5

如果您不确定您的版本,请运行:

$PSVersionTable.PSVersion
只需记住在运行之前更改执行策略,例如。

在执行此脚本之前,我使我的脚本不受限制

Set-ExecutionPolicy Unrestricted
这是我写的剧本

$databaseName="<DATABASE_NAME>"
$instanceName="<HOSTNAME\INSTANCENAME>"
$baseExportPath="C:\temp1\dbexport"
$query = "SELECT name FROM sys.Tables"

$tableNames = Invoke-SqlCmd –ServerInstance $instanceName -Database $databaseName –Query $query

New-Item -Force $baseExportPath -type directory

foreach($dataRow in $tableNames)
{
   $exportFileName=$baseExportPath + "\\" + $dataRow.get_Item(0).ToString() + ".csv"

   $tableSpecificQuery="select * from " + $dataRow.get_Item(0).ToString()
   Invoke-SqlCmd –ServerInstance $instanceName -Database $databaseName –Query $tableSpecificQuery | Export-Csv -Path $exportFileName -NoTypeInformation
}

一个选项?你可能想考虑这里提供的解决方案:这是伟大的,当试图扭转一个奇怪的数据库-我只是倾倒了几百个表后,改变一个特定的价值在应用程序到ABC123XYZ45 6。ious。这对反向工程非常有用-谢谢!我很高兴你发现它很有用!我在Sybase时代做过类似的事情。FWIW,有一些实用程序可以做类似的事情,我用过的一个是
-Delimiter '|'