Esporta la tabella dal database al file csv

Desidero: Esportare la tabella dal database del server sql in un file csv delimitato da virgole senza utilizzare la procedura guidata per l’importazione importata da SQL Server

Voglio farlo utilizzando una query perché voglio utilizzare la query in automazione

È ansible? L’ho cercato e non ho trovato una buona risposta

Qualche idea:

Da 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 

Utilizzo di SQLCMD (prompt dei comandi)

Esempio:

Dal prompt dei comandi, è ansible eseguire la query ed esportarla in un file:

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

Ulteriori informazioni qui: ExcelSQLServer

Gli appunti:

  • Questo approccio avrà le informazioni “Righe interessate” nella parte inferiore del file, ma è ansible eliminarle utilizzando “SET NOCOUNT ON” nella query stessa.

  • È ansible eseguire una stored procedure anziché la query effettiva (ad esempio “EXEC Database.dbo.StoredProcedure”)

  • È ansible utilizzare qualsiasi linguaggio di programmazione o persino un file batch per automatizzarlo

Utilizzo di BCP (prompt dei comandi)

Esempio:

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

È importante citare il separatore di virgola come -t ‘,’ vs just -t,

Maggiori informazioni qui: bcp Utility

Gli appunti:

  • Come per quando si utilizza SQLCMD, è ansible eseguire stored procedure anziché le query effettive
  • È ansible utilizzare qualsiasi linguaggio di programmazione o un file batch per automatizzarlo

Spero che questo ti aiuti.

Ecco un’opzione che ho trovato per esportare in Excel (può essere modificato per CSV credo)

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

Puoi anche usare il seguente modulo Node.js per farlo con facilità:

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); }); 

Da SQL Server Management Studio

Fai clic con il pulsante destro del mouse sulla tabella che desideri esportare e seleziona “Seleziona tutte le righe”

Fai clic destro sulla finestra dei risultati e seleziona “Salva risultati come …”

 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; 

Ho scritto un piccolo strumento che fa proprio questo. Il codice è disponibile su github .

Per scaricare i risultati di una (o più) query SQL su uno (o più) file CSV:

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

Saluti.