是否有SQL函数允许我自动将查询结果导出到.csv



我正在尝试备份SQL Server数据库中的所有表。以下是我想要执行的逻辑:

For Each TableName in MyDatabase
SELECT * 
FROM TableName
Export Results to C:TableName.csv
Loop

*免责声明:在数据备份方面,这些都不会是比本机备份更好的选择。我假设您只是想要一些平面文件备份

有几个手动选项可供选择,从通过Tasks->Generate Scripts生成脚本和数据,到手动运行select * from tablename,然后右键单击->将包括标题列的内容复制到自己的excel文件中。

更自动化的选项涉及SSIS包来处理这种枚举器逻辑。我相信处理这个问题的最好方法是使用powershell脚本。请参阅@Smor对以下答案的评论:SQL Server Management Studio 2012-将数据库的所有表导出为csv,以获取详细的powershell解决方案。

我所知道的唯一基于T-SQL的查询选项是尝试以下操作:

SELECT
'insert into OPENROWSET(''Microsoft.Jet.OLEDB.4.0'', 
''Excel 8.0;Database=@filepath'' + t.name + '.csv '', --@filepath would be replaced with your logic for determining filename+path
''SELECT * FROM [SheetName$]'') 
select * from ' + t.name + ';'
FROM
sys.tables

并执行此脚本的结果。

最新更新