我有数百个SQL Server表导出到txt或csv,"
文本限定符和|
分隔。导入/导出向导一次只允许一个表格。一次将所有SQL Server表导出到txt或csv
是否有更好的方法/工具/脚本一次全部?
谢谢
我有数百个SQL Server表导出到txt或csv,"
文本限定符和|
分隔。导入/导出向导一次只允许一个表格。一次将所有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语句。然后,您可以将它们复制并粘贴到命令窗口中。
在上面,你想用你的环境的细节替换{DATABASE NAME}和{SERVER NAME}。 “-T”使用可信的连接(即你),所以如果你需要使用特定的用户名和密码进行操作,你需要做相应的调整。看看BCP util报告了解更多详情。
SELECT可能需要根据数据库中对象的名称进行更多的调整,但希望这可以让您对启动的方式/方式有所了解。
这个工程很好,当试图反向设计一个奇怪的数据库 - 在将应用程序中的特定值更改为ABC123XYZ456后,我只丢弃了几百个表格。当我在生成的文本文件中对该值进行grep时,要检查的表和列名变得很明显。这对逆向工程非常有用 - 谢谢! –
我很高兴你发现它很有用!我在Sybase的日子里做过类似于你的事情。 FWIW,有几个实用程序可以做类似的事情,我使用的是[ApexSQL Search](https://www.apexsql.com/sql_tools_search.aspx) – CaseyR
我看到了你的文章,也看到了SQL管理工作室中的导出工具,注意到它没有做你正在谈论的多表导出(在我的情况下,SQL管理工作室2016预览)。我想也许我会写一个快速的PowerShell脚本来完成这项工作。
这对我来说至少是这样,1.提取数据库中所有表的列表,然后2.循环遍历所有表,3.从表中选择并导出到预定义位置的csv。
$PSVersionTable.PSVersion
只记得例如在运行之前更改执行策略:
我通过PowerShell的ISE在Windows 10,PowerShell的版本5
如果你不确定你的版本上运行的执行 https://technet.microsoft.com/en-us/library/ee176961.aspx
在执行此脚本之前,我使得我的地雷不受限制。
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
}
我没有明确指定出口CSV功能分隔符,但它可以通过添加
-Delimiter '|'
PowerShell中的选项可以轻松完成? – SQLChao
你可能想考虑这里提供的解决方案:http://stackoverflow.com/questions/12140947/using-bcp-utility-to-export-sql-queries-to-a-text-file – user2065377