Ami*_* A. 3 sql-server csv bcp
我正在尝试使用 bcp 实用程序将我所有数据库表的列名导出到一个 csv 文件,以便稍后将表中的数据合并到一个文件中,并将检索到的列名作为文件中的标题。
我已经复制了这个问题的答案中的代码: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
Run Code Online (Sandbox Code Playgroud)
您不能将 varchar(max) 与 xp_cmdshell 一起使用。
尝试一个 1 到 8000 之间的数字。
varchar(max) 的容量为 2GB 并在后台用作 TEXT 数据类型,因此不好
您将需要使用 VARCHAR(256) 或类似的最多 VARCHAR(8000)
| 归档时间: |
|
| 查看次数: |
6909 次 |
| 最近记录: |