Подтвердить что ты не робот

Как заставить Microsoft BCP экспортировать пустую строку вместо NUL char?

Я работал над тем, чтобы этот инструмент bcp работал определенным образом. Переключатель -c должен экспортировать с помощью символов, но по какой-то причине в Notepad ++ появился странный char, как если бы это был UNICODE или другое форматирование.

Я хотел получить этот char, который был пустой строкой в ​​базе данных, для экспорта в текстовую папку пустой строки. Как вы это делаете?

4b9b3361

Ответ 1

Хорошо, посмотрев по сети, это то, что я нашел. Подумал, чтобы положить его в так, чтобы все люди имели доступ к нему.

http://www.techtalkz.com/microsoft-sql-server/147106-how-export-empty-strings-via-bcp.html

Но когда я запускаю bcp, пустые строки записываются в текстовый файл используя символ ASCII "NUL" (0x0). Вместо этого я хочу, чтобы поле было заполненный пробелами (0x20).

Решение:

В текстовом файле пустая строка интерпретируется как NULL, когда вы навалом в данных. Символ NUL интерпретируется как пустая строка, поэтому есть последовательность. Но это не очень помогает, если вы экспортируете данных в другую систему....

Просто оберните вокруг NULLIF это поле, которое, возможно, пустое в базе данных и заставит его уловить '' и заменить на NULL. Это преобразуется в значения ^^ ^^^^ больше значений ^^ и больше ^^, поэтому вы получаете двойной разделитель с пробелом вместо символа NUL.

например:.

...
NULLIF(pri.InstanceName, '') as PerformanceInstanceName,
...

Надеюсь, это поможет кому-то.

Ответ 2

Просто продолжение...

Решение NULLIF выше отлично работает в Microsoft SQL, но для более стандартизованного решения, которое работает практически в любой базе данных, вы должны попробовать COALESCE.

Синтаксис очень похож:

COALESCE(pri.InstanceName, '') as PerformanceInstanceName