У меня есть файл csv, который я пытаюсь импортировать, используя BULK INSERT
. Проблема в том, что в файле есть поле, которое будет указано (с двойными кавычками), если в тексте есть запятая (не цитируется, если нет запятой). Существование дополнительной запятой вызывает SQL Server, чтобы выкидывать ошибки из-за неправильного количества столбцов во время вставки.sql server условная замена данных csv
Вот набор выборки данных:
928 Riata Dr,Magnolia,TX,77354,4/15/2014
22 Roberts Ave.,McKinney,TX,75069,4/15/2014
"5531 Trinity Place, #22",San Antonio,TX,78212,4/15/2014
Как видно, третья строка содержит запятую внутри поля адреса, таким образом, поле адреса указано. Так как команда BULK INSERT
бросает ошибки из-за этого, я предполагаю, что мне нужно будет очистить содержимое файла, прежде чем пытаться его загрузить.
Если кто-то имеет лучшее решение
вычистить содержимое файла мне нужно будет открыть файл (с SQL), читаемое в содержании, и сделать условную замену внутренней запятой (находится в пределах цитаты). Поскольку эта запятая на самом деле не нужна, я могу просто заменить ее на «» (пробел).
Затем я могу обрабатывать кавычки отдельно после того, как данные будут импортированы с помощью инструкции обновления для замены любых других символов, которые я не хочу.
Я думаю, что логика звучит, проблема в синтаксисе. Я не могу найти синтаксис, связанный с REGEX в SQL Server (Booo Microsoft). Это означает, что мне понадобится другой способ определить, появляется ли запятая в кавычках, и замените ее, если это так.
Любые мысли, предложения, код и т. Д.?
Заранее спасибо.
благодарит за ваш быстрый ответ. Я пытаюсь сделать это программно для автоматизации. Это будет ежедневная задача, которую я не хочу выполнять вручную. Ваше решение будет работать; однако я не хочу, чтобы каждый день касался каждого файла каждый раз. – sadmicrowave
А, я вижу, я полностью понимаю. Самый последний ответ на сообщение, подобное этому в SO, заключается в том, что нет ответа, кроме, например, импорта с разделителями табуляции и т. Д. Http://stackoverflow.com/questions/21226107/sql-server-bulk-insert-csv -with-data-having-comma, потому что SQL напрямую не поддерживает файлы CSV :(Это говорит о том, что может быть какой-то другой ответ. Если по какой-то причине вниз вы решите внедрить какое-то решение .NET для этого, у меня есть имел недавний успех с читателем LumenWorks CSV. Кроме этого, я не уверен, какую помощь я могу быть. – JackArbiter