2017-02-22 15 views
0

Задача: Я пытаюсь вставить файл .csv с тысячами/миллионами строк в таблицу SQL Server с запросом bulk insert. Теперь я хочу обновить таблицу с помощью массового обновления, когда конкретный столбец изменяется, например, когда цена изменяется. Как я могу это сделать? А также: Я хочу, чтобы игнорировать ограничение при вставке в таблицуМассовая смена всех записей для определенного столбца в базе данных SQL Server

BULK INSERT Table 
FROM 'D:\test.csv' 
WITH 
    (FIELDTERMINATOR = ',', 
    ROWTERMINATOR = '\n') 
GO 

Теперь, например, таблица содержит ценовую колонку, когда второй раз, когда я обновить файл только что обновление строки, которая имеет разную цену, прежде чем

ответ

3

Делает это в два (или более) шагов.

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

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

В качестве альтернативы вы можете написать клиентскую программу для предварительной очистки данных перед массовой вставкой или использовать инструмент, например Sql Server Integration Services (SSIS) для обработки импорта. У SSIS есть много приятных функций для работы с подобными вещами.

То, что вы не сможете сделать, это сделать простую или быструю настройку для кода объемной вставки. Он делает то, что делает, и ничего больше.

1

Вы не можете просто загружать один файл поверх предыдущей загрузки и записывать только отличия. Вы либо полностью обновляете данные (то есть: полная загрузка, которая перезаписывается), загружаете полный CSV в промежуточную таблицу и сравниваете две таблицы с использованием кода SQL, или вы можете использовать такой инструмент, как SSIS, для подключения к CSV-файлу, проверьте его против vales в вашем столе и запускать обновления оттуда.