SQL Server CSV экстракт таблиц с новой строки, двойные кавычки и запятые в столбцах - PullRequest
0 голосов
/ 17 декабря 2010

Я извлек около 10 таблиц в CSV с "в качестве текстового классификатора. Проблема в том, что моя выдержка выглядит неправильно в Excel из-за специальных символов в нескольких столбцах. Некоторые столбцы разбиваются на новую строку, когда она должна оставаться в колонка.

  1. Я делал это вручную, используя функцию экспорта из студии управления, но что лучше всего извлечь из 10 таблиц в CSV с помощью спецификатора двойной кавычки, используя скрипт?
  2. Должен ли я избегать запятых и двойных кавычек? Лучший способ сделать это?
  3. Как мне обращаться с кодами новой строки в моих столбцах, они нужны нам для перехода на новую систему, но премьер-министр хочет открыть файлы и внести изменения в Excel. Могут ли они быть в обоих направлениях?

Я понимаю, что большая часть проблемы заключается в том, что Excel интерпретирует файл, где утилита загрузки в другую базу данных может не делать ничего особенного с новой строкой, но как насчет двойных кавычек и запятых в данных, если мне все равно о Excel, я должен избежать этого?

Большое спасибо.

Ответы [ 3 ]

1 голос
/ 17 декабря 2010

Если вы используете SQL Server 2005 или более позднюю версию, мастер экспорта экспортирует файл Excel для вас. Щелкните правой кнопкой мыши базу данных, выберите Задачи-> Экспорт данных ... Установите источник в качестве базы данных. Установите пункт назначения, чтобы преуспеть. В конце мастера выберите опцию для создания пакета служб SSIS. Затем вы можете создать задание для выполнения пакета по расписанию или по запросу.

1 голос
/ 17 декабря 2010

Я бы посоветовал никогда не использовать запятые в качестве разделителя - они появляются слишком часто в других местах.Используйте вкладку, поскольку ее не так просто включить в таблицы Excel.

Убедитесь, что вы никогда не начинаете поле с пробела, если только вы не хотите, чтобы это поле в поле.

Попробуйтеизменив ваш текст lf's на буквальный текст \ n.То есть:

Возможно, у вас есть:

0,1, «Строка 1, Строка 2», 3

Я предлагаю вам захотеть:

0 1«Линия 1 \ nЛиния 2» 3

(при условии, что интервал между строками - табуляция)

Удачи

0 голосов
/ 29 января 2018

Насколько я знаю, у вас не может быть новой строки в столбцах csv. Если вы знаете, что столбец может содержать запятую, двойные кавычки или новую строку, то вы можете использовать этот оператор SQL для извлечения значения как действительного csv SELECT '"' + REPLACE(REPLACE(REPLACE(CAST([yourColumnName] AS VARCHAR(MAX)), '"', '""'), char(13), ''), char(10), '') + '"' FROM yourTable.

...