为 BCP 创建 SQL 查询的字符串格式问题
String formatting issue for creating the SQL query for BCP
我想将一些静态数据用于新的 BCP 查询并将提取的数据导出为 CSV。静态数据是在 运行 之前的一些 BCP 命令之后生成的结果。
但我一直面临使用这些变量创建 SQL 查询并生成 SQL 命令的字符串格式问题。
我只想在 BCP 命令中使用以下查询:
select @version, @TotalRecords
我用过的BCP查询是:
DECLARE
@version varchar(10),
@HeaderCmd VARCHAR(500),
@StateCode varchar(2),
@v_Header_path varchar(255),
@TotalRecords int;
SET @StateCode = 'AL'
SET @version = 'ver4'
SET @TotalRecords = 20
SET @v_Header_path ='c:\csv\test\' + @StateCode + '_header.txt'
SELECT @HeaderCmd = 'bcp '
+'"select '+ @version+ '" '
+ ' queryout ' + @v_Header_path
+ ' -c -t, -T' ;
SELECT @HeaderCmd AS 'Command to execute';
EXECUTE master..xp_cmdshell @HeaderCmd;
以上命令正在生成以下 sql 命令:
bcp "select ver4" queryout c:\csv\test\AL_header.txt -c -t, -T
并给出错误:
Error = [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Invalid column name 'ver4'.
我想将 @version
和 @TotalRecords
的值导出到 CSV 文件中。
但是我在创建 SQL 查询作为字符串时遇到了字符串格式问题。
为列命名,并在引号中输出值。使用连续的单引号将引号传递给字符串:
select @HeaderCmd =
'bcp ' +
'"select ''' + @stateCode + ''' as stateCode, ''' + @version + ''' as version, ' + convert(varchar(10), @totalRecords) + ' as totalRecords" ' +
' queryout ' + @v_Header_path +
' -c -t, -T' ;
这应该输出:
bcp "select 'AL' as stateCode, 'ver4' as version, 20 as totalRecords" queryout c:\csv\test\AL_header.txt -c -t, -T
我想将一些静态数据用于新的 BCP 查询并将提取的数据导出为 CSV。静态数据是在 运行 之前的一些 BCP 命令之后生成的结果。
但我一直面临使用这些变量创建 SQL 查询并生成 SQL 命令的字符串格式问题。
我只想在 BCP 命令中使用以下查询:
select @version, @TotalRecords
我用过的BCP查询是:
DECLARE
@version varchar(10),
@HeaderCmd VARCHAR(500),
@StateCode varchar(2),
@v_Header_path varchar(255),
@TotalRecords int;
SET @StateCode = 'AL'
SET @version = 'ver4'
SET @TotalRecords = 20
SET @v_Header_path ='c:\csv\test\' + @StateCode + '_header.txt'
SELECT @HeaderCmd = 'bcp '
+'"select '+ @version+ '" '
+ ' queryout ' + @v_Header_path
+ ' -c -t, -T' ;
SELECT @HeaderCmd AS 'Command to execute';
EXECUTE master..xp_cmdshell @HeaderCmd;
以上命令正在生成以下 sql 命令:
bcp "select ver4" queryout c:\csv\test\AL_header.txt -c -t, -T
并给出错误:
Error = [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Invalid column name 'ver4'.
我想将 @version
和 @TotalRecords
的值导出到 CSV 文件中。
但是我在创建 SQL 查询作为字符串时遇到了字符串格式问题。
为列命名,并在引号中输出值。使用连续的单引号将引号传递给字符串:
select @HeaderCmd =
'bcp ' +
'"select ''' + @stateCode + ''' as stateCode, ''' + @version + ''' as version, ' + convert(varchar(10), @totalRecords) + ' as totalRecords" ' +
' queryout ' + @v_Header_path +
' -c -t, -T' ;
这应该输出:
bcp "select 'AL' as stateCode, 'ver4' as version, 20 as totalRecords" queryout c:\csv\test\AL_header.txt -c -t, -T