3

bcp ユーティリティを使用して、すべての DB テーブルの列名を csv ファイルにエクスポートし、後でテーブルのデータとマージして、取得した列名をファイルのヘッダーとして 1 つのファイルにマージしようとしています。

この質問からの回答のコードをコピーしました: export table to file with column headers (column names) using the bcp utility and SQL Server 2008 . しかし、私はこのエラーが発生しています:

メッセージ 214、レベル 16、状態 201、プロシージャ xp_cmdshell、行 1 プロシージャは、タイプ 'varchar' のパラメータ 'no_output' を想定しています。

これが私のコードです:

DECLARE @var NVARCHAR(MAX)

DECLARE curRunning
CURSOR LOCAL FAST_FORWARD FOR
SELECT name FROM sysobjects WHERE type = 'U'

OPEN curRunning

FETCH NEXT FROM curRunning INTO @var

WHILE @@FETCH_STATUS = 0
BEGIN
     DECLARE @Exec2 NVARCHAR(MAX),@sql1 VARCHAR(1000)
     SET @sql1 ='"DECLARE @colnames VARCHAR(max);SELECT @colnames= COALESCE(@colnames + '+''','''+' , '''') + column_name from dbname.INFORMATION_SCHEMA.columns where TABLE_NAME='+@var+'; select @colnames;"'
     SET @Exec2 = 'exec master.dbo.xp_cmdshell ''bcp '+@sql1+' queryout "C:\migration\HeadersOnly'+@var+'.csv" -c -k -T -t,'''
     PRINT @Exec2
     EXECUTE sp_executesql @Exec2
FETCH NEXT FROM curRunning INTO @var
END

CLOSE curRunning
DEALLOCATE curRunning
4

2 に答える 2

2

あなたのコードで:

set @Exec2 = 'exec master.dbo.xp_cmdshell ''bcp '+@sql1+ 'queryout "C:\migration\HeadersOnly'+@var+'.csv" -c -k -T -t,'''

末尾にコンマ (,) があります。

-t,'''

xp_cmdsheel次のパラメータが必要であることを示しています。そのパラメーターは[NO OUTPUT]です。そのパラメータを指定しない場合は、コンマを削除してください。

参照: xp_cmdshell (Transact-SQL)

于 2013-06-26T15:27:40.547 に答える