Вам необходимо указать терминатор поля при использовании -t
(который по умолчанию является вкладкой (\t
). Поскольку вы не указали его, используется значение по умолчанию:
SET @cmd = 'bcp " SELECT * from testdb.dbo.test_table " queryout "'
+ @pathAndFileName + '" -w -T -t "," -S Servername\SQLExpress; ';
Обратите внимание, однако, я настоятельно рекомендую не объединять необработанное значение @pathAndFileName
, особенно когда это nvarchar(MAX)
. То, что у вас есть, может быть легко введено.
Если @pathAndFileName
всегда будет иметьзначение меньше или равно 128 символам, тогда я бы объявил @pathAndFileName
как sysname, а затем использовал бы ...+ QUOTENAME(@pathAndFileName,'"') + ...
. Если это может быть больше 128 символов, тогда вам нужно будет заключить его в кавычки самостоятельно:
... + REPLACE(@pathAndFileName,'"','""') + ...