Существует на самом деле способ для запроса 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
Вот что мне нужно для достижения этой цели.
Скачано и установлено 2007 Office System Driver: Data Connectivity Components.
Мне пришлось включить специальные запросы с помощью следующей команды.
EXEC sp_configure 'show advanced options', 1
RECONFIGURE
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE
GO
- Мне нужно было убедиться, что я запускаю SQL Server Management Studio в качестве системного администратора. В моем случае мне нужно было щелкнуть правой кнопкой мыши и Запуск от имени администратора. Если вы находитесь в более управляемой среде, работайте с вашим сетевым администратором, чтобы получить правильные права.
Это должно быть все, что вам нужно. Опять же, я тестировал это локально, и каждый из перечисленных выше элементов был необходим для преодоления определенных ошибок на этом пути.
Ну, вы можете создать «необработанную таблицу», а затем вставить в таблицу целей и затем обрезать необработанную таблицу. Или есть способы прямого доступа к Excel с SQL. Или вы можете создать пакет SSIS, чтобы сделать это за вас. Или вы можете создать триггер, имейте в виду, что триггеры вставки по умолчанию не срабатывают при использовании мастера импорта-экспорта, поэтому вам придется изменить настройку для этого. – Stephan
Думаю, вам будет проще искать SSIS. Вы можете сделать это легко – BICube