2013-07-09 2 views
1

В настоящее время я работаю над проектом, который требует, чтобы данные из отчета, созданного сторонним программным обеспечением, вставлялись в локальную базу данных SQL. До сих пор у меня есть данные, хранящиеся в виде табуляции файла .txt и следующая насыпной вставка SQL заявление:Форматирование полей во время массовой вставки SQL 2008

BULK INSERT ExampleTable 
FROM 'c:\temp\Example.txt' 
WITH 
(
FIRSTROW = 2, 
FIELDTERMINATOR = '\t', 
ROWTERMINATOR = '\n' 
) 
GO 

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

Например, один из столбцов таблицы - это поле описания, а некоторые значения выглядят так: «это пример описания, дополнительная информация, я не знаю, почему автор использовал запятые в первую очередь здесь »

Меня не интересует поле описания почти столько же, сколько и другие поля, содержащие суммы в долларах. Каждое из этих полей уже имеет префикс знака $, поэтому я должен установить их как nvarchar вместо десятичного или float, что будет A LOT более полезно для отчетности. Кроме того, когда сумма доллара больше 1000, поле также будет содержать запятую и, таким образом, кавычки. ex "$ 1,084.59"

Я знаком с SSMS, но я никогда не делал формат или файл bcp (решения, которые я нашел в Интернете).

Любая помощь была бы принята с благодарностью.

ответ

0

Вы можете использовать файл формата, но только в том случае, если ваши метаданные остаются постоянными, что, по-видимому, не в вашем случае. Вы заявляете, что суммы в долларах заключены в кавычки только тогда, когда они превышают 999 и запятая вставлена. Файл формата позволит вам определять разделители столбцов, такие как [,] или [","]. Но если этот разделитель перемещается по всему файлу, вам придется предварительно обработать файл. Сами атрибуты текста не поддерживаются.

Для справки:

CSV import in SQL Server 2008

http://jessesql.blogspot.com/2010/05/bulk-insert-csv-with-text-qualifiers.html

+0

Благодарим за помощь. Я пришел к такому же выводу, что данные должны быть предварительно обработаны. –

+0

Одна вещь, которую я делал в прошлом с успехом, - это импорт данных в таблицу с необработанной строкой, ограничивающей только строку. Затем с несколькими видами вы можете создать интеллект предварительной обработки, а затем вставить в физическую таблицу из своих представлений или сделать из нее хранимую процедуру. – cocogorilla

0

Я не понимаю, почему, но ThiefMaster удален мой ответ :-( probabaly ошибку, и он не проверил ссылку, как это ссылка полный ответ на ваш вопрос, я попробую еще раз в последний раз здесь ...

Совет: если ваш CSV-файл не имеет согласованного формата, например, на той же колонке, какой-то о е значения являются doubleqouted и некоторые из них не чем этот блог поможет вам сделать это простым способом (с помощью OPENROWSET на последнем этапе сделать это один простой запрос): http://ariely.info/Blog/tabid/83/EntryId/122/Using-Bulk-Insert-to-import-inconsistent-data-format-using-pure-T-SQL.aspx

  • Существует новая WIKI по адресу: http://social.technet.microsoft.com/wiki на основе этого блога , если вы предпочитаете читать с сайта Microsoft.
Смежные вопросы