TSQL: лучший способ обновить таблицу БД с помощью файла CSV - PullRequest
5 голосов
/ 14 июля 2009

У меня есть таблица продуктов в sql server 2005, которую необходимо обновить с помощью определенных полей в CSV-файле. Оба файла имеют номер детали поставщика, который может быть связан с тем, где я могу обновить поле products.discontined другим в файле csv.

Мой вопрос: как лучше всего подойти к этому?

Я рассмотрел вопрос создания соединения odbc с файлом Excel и выяснил, как объединить обновление 2 столбцов. Импортируйте весь CSV-файл (~ 60 МБ) во временную таблицу на сервере SQL, а затем напишите процедуру tsql для поиска, сравнения, обновления? Также выполняем команду с открытым исходным кодом из анализатора запросов и пишем процедуру для чтения в файле csv и обновления таблицы таким образом.

заранее спасибо

1 Ответ

3 голосов
/ 14 июля 2009

Если он доступен для вас, лучшим вариантом для SQL Server 2005 являются службы интеграции SQL Server (ранее - службы преобразования данных или DTS). Это позволит вам создать пакет, который может находиться в любом месте и запускаться по расписанию или вызываться, когда вы решите. Он также может работать асинхронно с вызывающим приложением.

Обновление:
Кроме того, вы можете запустить и отладить пакет, чтобы он стал идеальным, прежде чем вы решите опубликовать его. Это позволит вам учитывать такие вещи, как искаженные документы и т. Д.

если у вас нет SSIS, вы можете выполнить массовую вставку (ссылка: http://blog.sqlauthority.com/2008/02/06/sql-server-import-csv-file-into-sql-server-using-bulk-insert-load-comma-delimited-file-into-sql-server/)

создайте таблицу, которая соответствует схеме вашего csv, затем импортируйте ее, используя следующую команду:

BULK
INSERT MyTable
FROM ‘c:\mycsv.csv’
WITH
(
    FIELDTERMINATOR = ‘,’,
    ROWTERMINATOR = ‘\n’
)

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

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

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