目的:SQL Serverインポートエクスポートウィザードを使用せずに、SQL Serverデータベースからカンマ区切りのcsv
ファイルにテーブルをエクスポートする
私は自動化でクエリを使用したいので、クエリを使用してそれをしたいです
出来ますか?私はそれを探しましたが、良い答えは見つかりませんでした
いくつかのアイデア:
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 -S . -d DatabaseName -E -s',' -W -Q "SELECT * FROM TableName" > C:\Test.csv
詳細はこちら: ExcelSQLServer
ノート:
このアプローチでは、ファイルの下部に「影響を受ける行」情報が含まれますが、クエリ自体で「SET NOCOUNT ON」を使用することでこれを取り除くことができます。
実際のクエリの代わりにストアドプロシージャを実行できます(例:「EXEC Database.dbo.StoredProcedure」)
例:
bcp "SELECT * FROM Database.dbo.Table" queryout C:\Test.csv -c -t',' -T -S .\SQLEXPRESS
カンマ区切りを-t '、' vs just -tとして引用することが重要です。
詳細はこちら: bcp Utility
ノート:
お役に立てれば。
次の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);
});
ここにオプションがあります 見つかった Excelにエクスポートする(CSV用に修正できると信じています)
insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=D:\testing.xls;',
'SELECT * FROM [SheetName$]') select * from SQLServerTable
SQL Server Management Studioから
エクスポートするテーブルを右クリックし、「すべての行を選択」を選択します
結果ウィンドウを右クリックし、「名前を付けて結果を保存...」を選択します
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で 。
1つ(または複数)のSQLクエリの結果を1つ(または複数)のCSVファイルにダンプするには:
Java -jar sql_dumper.jar /path/sql/files/ /path/out/ user pass jdbcString
乾杯。
死んだ馬かもしれませんが、しばらく前に私は同じことをしようとしていて、探していたものを実行しようとしたSTPを作成するスクリプトに出くわしましたが、注意が必要ないくつかの癖がありました。更新を投稿するスクリプトを見つけた場所を追跡しようとして、このスレッドに出会い、共有するのに良い場所のように思えました。
このSTP(ほとんどの部分は信用されず、見つけたサイトが見つかりません)、スキーマ名、テーブル名、およびYまたはNを取ります[含めるか、または入力ヘッダーとしてヘッダーを除外し、提供されたテーブルを照会し、各行をコンマ区切りの引用符付きCSV形式で出力します。
私は元のスクリプトに多数の修正/変更を加えましたが、その骨はOPであり、それが誰であれです。
スクリプトは次のとおりです。
IF OBJECT_ID('get_csvFormat', 'P') IS NOT NULL
DROP PROCEDURE get_csvFormat
GO
CREATE PROCEDURE get_csvFormat(@schemaname VARCHAR(20), @tablename VARCHAR(30),@header char(1))
AS
BEGIN
IF ISNULL(@tablename, '') = ''
BEGIN
PRINT('NO TABLE NAME SUPPLIED, UNABLE TO CONTINUE')
RETURN
END
ELSE
BEGIN
DECLARE @cols VARCHAR(MAX), @sqlstrs VARCHAR(MAX), @heading VARCHAR(MAX), @schemaid int
--if no schemaname provided, default to dbo
IF ISNULL(@schemaname, '') = ''
SELECT @schemaname = 'dbo'
--if no header provided, default to Y
IF ISNULL(@header, '') = ''
SELECT @header = 'Y'
SELECT @schemaid = (SELECT schema_id FROM sys.schemas WHERE [name] = @schemaname)
SELECT
@cols = (
SELECT ' , CAST([', b.name + '] AS VARCHAR(50)) '
FROM sys.objects a
INNER JOIN sys.columns b ON a.object_id=b.object_id
WHERE a.name = @tablename AND a.schema_id = @schemaid
FOR XML PATH('')
),
@heading = (
SELECT ',"' + b.name + '"' FROM sys.objects a
INNER JOIN sys.columns b ON a.object_id=b.object_id
WHERE a.name= @tablename AND a.schema_id = @schemaid
FOR XML PATH('')
)
SET @tablename = @schemaname + '.' + @tablename
SET @heading = 'SELECT ''' + right(@heading,len(@heading)-1) + ''' AS CSV, 0 AS Sort' + CHAR(13)
SET @cols = '''"'',' + replace(right(@cols,len(@cols)-1),',', ',''","'',') + ',''"''' + CHAR(13)
IF @header = 'Y'
SET @sqlstrs = 'SELECT CSV FROM (' + CHAR(13) + @heading + ' UNION SELECT CONCAT(' + @cols + ') CSV, 1 AS Sort FROM ' + @tablename + CHAR(13) + ') X ORDER BY Sort, CSV ASC'
ELSE
SET @sqlstrs = 'SELECT CONCAT(' + @cols + ') CSV FROM ' + @tablename
IF @schemaid IS NOT NULL
EXEC(@sqlstrs)
ELSE
PRINT('SCHEMA DOES NOT EXIST')
END
END
GO
--------------------------------------
--EXEC get_csvFormat @schemaname='dbo', @tablename='TradeUnion', @header='Y'