cmd:bcp

データをエクスポート

基本的な使い方は以下の通り
タブ区切りでテーブルのレコードがすべて出力されます。
bcp [DB名].dbo.[テーブル名] out "[出力先ファイル名]" -S [インスタンス名] -U [ユーザID] -P [パスワード]
例)
SET dbName=TestDB
SET tableName=TestTable
SET filePath=%~dp0TestFile.csv
SET instanceName=TestInstance
SET userId=sa
SET password=Password
bcp %dbName%.dbo.%tableName% out "%filePath%" -S %instanceName% -U %userId% -P %password%
[[PAUSE]]

queryoutを使用すればクエリの実行結果をファイルに出力できます。
SQLを複数行記載する場合は以下の点に注意します。
  • 「^」で「"」や「()」をエスケープ
  • 「^」で複数行を結合
  • 「%」で「%」をエスケープ
例)
SET dbName=TestDB
SET tableName=TestTable
SET filePath=%~dp0TestFile.csv
SET instanceName=TestInstance
SET userId=sa
SET password=Password
bcp ^"^
	USE %dbName%^
	DECLARE @TableName NVARCHAR^(50^)^
	SET @TableName='%tableName%'^
	DECLARE @TmpTbl TABLE^(^
		ColumnName NVARCHAR^(50^)^)^
	INSERT INTO @TmpTbl^
	SELECT col.name^
	FROM sys.columns AS col^
	LEFT OUTER JOIN sys.objects AS obj^
	ON col.object_id = obj.object_id^
	WHERE ^(obj.type = 'U'^)^
	AND ^(obj.name = @TableName^)^
	AND col.name NOT LIKE '%%Time'^
	ORDER BY col.name^
	DECLARE @ColumnName NVARCHAR^(50^)^
	DECLARE @SQL NVARCHAR^(MAX^)^
	SET @SQL = ''^
	WHILE EXISTS ^(SELECT * FROM @TmpTbl^) BEGIN ^
		SELECT TOP 1 @ColumnName = ColumnName^
		FROM @TmpTbl^
		ORDER BY ColumnName^
		DELETE FROM @TmpTbl^
		WHERE ColumnName = @ColumnName^
		SET @SQL = @SQL + @ColumnName^
		IF EXISTS ^(SELECT * FROM @TmpTbl^) BEGIN^
			SET @SQL = @SQL + ','^
		END^
	END^
	SET @SQL = 'SELECT ' + @SQL + ' FROM ' + @TableName + ' ORDER BY ' + @SQL^
	EXECUTE^(@SQL^)^"^
	queryout "%filePath%" -S %instanceName% -U %userId% -P %password%

データをインポート

bcp [DB名].dbo.[テーブル名] in "[読み込み元ファイル名]" -S [インスタンス名] -U [ユーザID] -P [パスワード]
例)
SET dbName=TestDB
SET tableName=TestTable
SET filePath=%~dp0TestFile.csv
SET instanceName=TestInstance
SET userId=sa
SET password=Password
IF EXIST "%filePath%" (
	sqlcmd -Q "DELETE FROM %dbName%.dbo.%tableName%" -S %instanceName% -U %userId% -P %password%
	bcp %dbName%.dbo.%tableName% in "%filePath%" -S %instanceName% -U %userId% -P %password%
)
最終更新:2014年07月29日 23:55
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。