Экспорт данных с помощью утилиты bcp с двойными кавычками - PullRequest
1 голос
/ 18 мая 2019

Я пытаюсь экспортировать данные с сервера MS SQL с помощью командной строки bcp . Проблема в том, что в экспортированном выводе отсутствует первая двойная кавычка в первой строке, и я не могу объяснить причину.

Ниже команды, которую я использую для экспорта:

 /opt/mssql-tools/bin/bcp db_schema out dump.csv -c -t"\",\"" -r"\"\n\"" -S my_host -U my_user

Но в результате вывода отсутствуют первые двойные кавычки в первой строке (только в первой строке) экспортированного файла CSV:

801","40116","Hazelnut MT -L","Thursday Promo","Large","","5.9000","","801","1.0000","","3.6500","2.2500",".0000","default","","","","","Chatime","02/06/2014","09125a9cfffd4143a00e73e3b62f15f2","CB01","",".0000","5.9000","6.9000",".0000",".0000",".0000",".0000",".0000",".0000","0","","0","0","0","","","","","","","","","Modern Milk Tea","","","0","","","1","0","","","","","","","","0","Hau Chan","","","","","","","","","","0","","","","","","","-1","","","","","","","","","","","","0","00000000420714AA","2014-06-02","1900-01-01","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""

Я что-то упустил?

Ответы [ 3 ]

1 голос
/ 18 мая 2019

Если вы знаете имена полей, вы можете попробовать следующее:

Create Table [names]
(
Id Int,
fname VarChar(15),
lname VarChar(25)
)
Insert Into names Values
(1, 'Jim', 'Morrison'),
(2,'Robert', 'Plant'),
(3,'Janis', 'Joplin')

Команда BCP: Использование quotename () с char (34)

(Эта команда BCP использует Trustedсоединение)

bcp "SELECT quotename(Cast(Id As VarChar(15)),char(34)), quotename(fname,char(34)), quotename(lname,char(34)) FROM names" queryout dump.csv -c -t"," -S SERVER -d DBNAME -T

Результат:

"1","Jim","Morrison"
"2","Robert","Plant"
"3","Janis","Joplin"
0 голосов
/ 20 мая 2019

Ответ с квотным именем, предоставленный level3looper, будет работать в вашем случае.

Для полноты, я предоставляю решение, которое я дал в прошлом для той же цели.Мне нравится этот немного лучше, потому что он сохраняет определение форматирования в файле форматирования, куда я предпочитаю идти, чтобы получить эту информацию.Quotename является хорошим решением для быстрой работы ad-hoc, но для автоматизации бизнес-процессов я бы рекомендовал ссылку ниже.

По сути, вы просто добавляете столбец «фиктивный» в начало определенияраспакуйте файл и разделите этот столбец одинарной двойной кавычкой.Затем вы также отмечаете в файле формата пропустить первый столбец.Это дает вам только двойную кавычку в начале строки.

sql-канал bcp сервера массовой вставки, разделенный текстовым файлом форматирования квалификатора

0 голосов
/ 19 мая 2019

Держу пари, что у вас также есть строка в конце файла, которая представляет собой одну двойную кавычку. Зачем? С предоставленными вами ключами командной строки вы говорите: «заканчивайте каждое поле ",", а каждую строку "\n"". И это то, что он делает.

Итак, вторая и последующие строки начинаются с двойной кавычки, потому что предыдущая строка заканчивается на одну.

Clippy DBA говорит: "похоже, вы пытаетесь создать CSV". Не зная почему, мне трудно ... э ... Клиппи предложить альтернативу. В частности, что будет читать этот файл? Будете ли вы читать это с помощью Excel или чего-то еще, ожидающего определенного формата? Будете ли вы импортировать его в другую таблицу базы данных?

...