2015-05-05 3 views
2

Мне нужно импортировать файл Excel в базу данных SQL Server 2012. Он будет содержать около 12 000 строк каждый месяц. Я знаю, что могу использовать мастер для выполнения этой задачи, но я хотел бы удалить строки из таблицы назначения, если они соответствуют идентификационному номеру импортируемых данных.Мастер импорта и экспорта SQL

Смогу ли я импортировать данные в таблицу темп, а затем выполнить совпадение/удалить все в одном скрипте с помощью мастера?

Должен ли я скорее взглянуть на другой метод?

Благодаря

+2

Ну, вы можете создать «необработанную таблицу», а затем вставить в таблицу целей и затем обрезать необработанную таблицу. Или есть способы прямого доступа к Excel с SQL. Или вы можете создать пакет SSIS, чтобы сделать это за вас. Или вы можете создать триггер, имейте в виду, что триггеры вставки по умолчанию не срабатывают при использовании мастера импорта-экспорта, поэтому вам придется изменить настройку для этого. – Stephan

+1

Думаю, вам будет проще искать SSIS. Вы можете сделать это легко – BICube

ответ

1

Существует на самом деле способ для запроса Excel файл так же, как вы могли бы сделать к столу, и это позволит вам довольно легко делать то, что вы описали. С учетом сказанного, есть немного предварительной работы, чтобы заставить его работать.

Для этого объяснения я тестировал локально с файлом xlsx (созданным с помощью Excel 2013) с одним листом Sheet1 с двумя столбцами, первой строкой, содержащей имена столбцов и Field2.

Вот что я могу сделать в настоящее время.

--SELECT from Sheet1 into a local temp table 
SELECT * INTO #TempTable 
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 
    'Excel 12.0 Xml; 
    Database=C:\Users\pwalton\Documents\test.xlsx', 
    [Sheet1$]); 

--Clear out the original records 
DELETE FROM TestImportTable 
WHERE Field1 IN (SELECT Field1 FROM #TempTable) 

--Insert the new ones 
INSERT INTO TestImportTable 
SELECT * FROM #TempTable 

--Get rid of the evidence! 
DROP TABLE #TempTable 

Вот что мне нужно для достижения этой цели.

  1. Скачано и установлено 2007 Office System Driver: Data Connectivity Components.

  2. Мне пришлось включить специальные запросы с помощью следующей команды.

    EXEC sp_configure 'show advanced options', 1 
    RECONFIGURE 
    GO 
    EXEC sp_configure 'ad hoc distributed queries', 1 
    RECONFIGURE 
    GO 
    
  3. Мне нужно было убедиться, что я запускаю SQL Server Management Studio в качестве системного администратора. В моем случае мне нужно было щелкнуть правой кнопкой мыши и Запуск от имени администратора. Если вы находитесь в более управляемой среде, работайте с вашим сетевым администратором, чтобы получить правильные права.

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

Смежные вопросы