将表从数据库导出到csv文件

我想要:从SQL Server数据库导出表到逗号分隔的csv文件,而不使用SQL Server导入导出向导

我想用查询来做,因为我想在自动化中使用查询

可能吗? 我search了,没有find一个好的答案

一些想法:

从SQL Server Management Studio

  1. Run a SELECT statement to filter your data 2. Click on the top-left corner to select all rows 3. Right-click to copy all the selected 4. Paste the copied content on Microsoft Excel 5. Save as CSV 

使用SQLCMD(命令提示符)

例:

在命令提示符下,您可以运行查询并将其导出到文件中:

 sqlcmd -S . -d DatabaseName -E -s',' -W -Q "SELECT * FROM TableName" > C:\Test.csv 

更多信息在这里: ExcelSQLServer

笔记:

  • 这种方法将在文件底部有“行受影响”的信息,但是你可以通过在查询本身中使用“SET NOCOUNT ON”来解决这个问题。

  • 你可以运行一个存储过程而不是实际的查询(例如“EXEC Database.dbo.StoredProcedure”)

  • 您可以使用任何编程语言,甚至batch file来自动执行此操作

使用BCP(命令提示符)

例:

 bcp "SELECT * FROM Database.dbo.Table" queryout C:\Test.csv -c -t',' -T -S .\SQLEXPRESS 

引用逗号分隔符是很重要的,因为-t','vs只是-t,

更多信息在这里: bcp工具

笔记:

  • 按照使用SQLCMD时,您可以运行存储的过程,而不是实际的查询
  • 您可以使用任何编程语言或batch file来自动执行此操作

希望这可以帮助。

这里是我发现导出到Excel的选项(可以修改为CSV我相信)

 insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:\testing.xls;', 'SELECT * FROM [SheetName$]') select * from SQLServerTable 

您还可以使用以下Node.js模块轻松完成此操作:

https://www.npmjs.com/package/mssql-to-csv

 var mssqlExport = require('mssql-to-csv') // All config options supported by https://www.npmjs.com/package/mssql var dbconfig = { user: 'username', password: 'pass', server: 'servername', database: 'dbname', requestTimeout: 320000, pool: { max: 20, min: 12, idleTimeoutMillis: 30000 } }; var options = { ignoreList: ["sysdiagrams"], // tables to ignore tables: [], // empty to export all the tables outputDirectory: 'somedir', log: true }; mssqlExport(dbconfig, options).then(function(){ console.log("All done successfully!"); process.exit(0); }).catch(function(err){ console.log(err.toString()); process.exit(-1); }); 

从SQL Server Management Studio

右键点击要导出的表格,然后select“Select All Rows”

右键单击结果窗口并select“将结果另存为…”

 rsubmit; options missing=0; ods listing close; ods csv file='\\FILE_PATH_and_Name_of_report.csv'; proc sql; SELECT * FROM `YOUR_FINAL_TABLE_NAME'; quit; ods csv close; endrsubmit; 

我写了一个小工具来做到这一点。 代码在github上可用。

将一个(或多个)SQL查询的结果转储到一个(或多个)CSV文件:

 java -jar sql_dumper.jar /path/sql/files/ /path/out/ user pass jdbcString 

干杯。