SQL 2005 CSV Импорт цитаты с внутренними кавычками и запятыми - PullRequest
6 голосов
/ 02 апреля 2009

У меня есть файл CSV с разделителями текста цитаты. Большинство из 90000 строк в порядке, но у меня есть несколько строк с текстовым полем, которое содержит кавычки и запятую. Например, значение поля будет:

AB», AB

При разделении это становится

"AB" "AB"

Когда SQL 2005 пытается импортировать это, я получаю ошибки, такие как ...

Messages
Error 0xc0202055: Data Flow Task: The column delimiter for column "Column 4" was not found.
 (SQL Server Import and Export Wizard)

Это, кажется, происходит только тогда, когда кавычка и запятая находятся в текстовом значении вместе. Значения, такие как

AB "AB, который становится" AB "" AB " или же AB, AB, который становится "AB, AB"

отлично работает.

Вот несколько примеров строк ...

"1464885","LEVER WM","","B","MP17"
"1465075",":PLT-BC   !!NOTE!!","","B",""
"1465076","BRKT-STR MTR            !NOTE!","","B",""
"1465172",":BRKT-SW MTG   !NOTE!","","B","MP16"
"1465388","BUSS BAR                !NOTE!","","B","MP10"
"1465391","PLT-BLKHD     ""NOTE""","","B","MP20"
"1465564","SPROCKET:13TEETH,74MM OD,66MM","ID W/.25"" SETSCR","B","MP6"
"S01266330002","CABLE:224"",E122/261,8 CO","","B","MP11"

Последняя строка является примером проблемы - "", вызывает ошибку.

Ответы [ 4 ]

4 голосов
/ 09 сентября 2009

У меня были ОСНОВНЫЕ проблемы с SSIS. Вещи, которые Access, Excel и даже DTS, казалось, делали очень хорошо, SSIS давится. Данные с переменной длиной записи - еще одна проблема, но да, эти встроенные классификаторы являются серьезной проблемой. Особенно, если у вас нет доступа к файлам импорта, потому что они находятся на чужом сервере, за который вы платите, чтобы получить доступ, и могут иметь размер от 4 до 5 ГБ! Не могу просто заменить все на каждый импорт.

Вы можете проверить это в разделе «Загрузки Microsoft» под названием « UnDouble », и вот еще один обходной путь , который вы можете попробовать.

Похоже с SSIS в SQL Server 2008, ошибка все еще есть. Я не знаю, почему они не решили эту проблему в парсере, но похоже, что мы вернулись в прошлое с SSIS в базовой функциональности импорта.

ОБНОВЛЕНИЕ 11-18-2010: Эта ошибка все еще существует в службах SSIS. Удивительно.

1 голос
/ 18 ноября 2010

Microsoft говорит, что двойные двойные кавычки внутри полей с двойными кавычками просто не работают. Исправление запланировано на конец 2011 года ...

В то же время нам придется использовать обходные пути, как описано в других ответах.

1 голос
/ 03 апреля 2009

Как насчет просто:

  1. Поиск / замена всех "", на ''; (исправить все разбитые поля)
  2. Поиск / замена всех; ''; с "", (чтобы "отменить" правильно пустые поля.)
  3. Поиск / замена всех ''; ''; с "", "", (чтобы "отменить" правильно пустые поля, которые следуют за правильной инкапсуляцией встроенных разделителей.)

Преобразует ваш оригинал в:

   "1464885","LEVER WM","","B","MP17"
"1465075",":PLT-BC   !!NOTE!!","","B",""
"1465076","BRKT-STR MTR            !NOTE!","","B",""
"1465172",":BRKT-SW MTG   !NOTE!","","B","MP16"
"1465388","BUSS BAR                !NOTE!","","B","MP10"
"1465391","PLT-BLKHD     ""NOTE""","","B","MP20"
"1465564","SPROCKET:13TEETH,74MM OD,66MM","ID W/.25"" SETSCR","B","MP6"
"S01266330002","CABLE:224'';E122/261,8 CO","","B","MP11"

Что, похоже, отлично работает в SSIS. Возможно, вам придется выполнить шаг 3 рекурсивно, чтобы учесть 3 пустых поля в строке (';;'; ''; и т. Д.), Но суть здесь в том, что когда у вас есть встроенные текстовые классификаторы, вы должны либо избегать их или заменить их. Пусть это будет уроком ваших будущих процессов создания CSV.

0 голосов
/ 02 апреля 2009

Я бы просто выполнил поиск / замену ", и заменил бы его на

У вас есть доступ к исходному файлу?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...