我正在尝试备份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
并执行此脚本的结果。