Чтобы сделать это с помощью T-SQL, вы можете следовать этой tutorial в деталях и начать вытягивать данные в временная таблица, как показано в следующем SELECT…INTO
заявления:
SELECT * INTO #ProductInfo
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0 Xml; HDR=YES; IMEX=1;
Database=C:\DataFiles\ProductData.xlsx',
[vProduct$]);
Используя OPENROWSET
в сборке функции для извлечения данных в Excel, где первый аргументом является именем поставщика, который может быть одним из двух поставщиков:
- Microsoft.Jet.OLEDB.4.0: Использование в 32-разрядных версиях SQL Server для Excel 2003 файлов (или ранее).
- Microsoft.ACE.OLEDB.12.0: Использование на SQL Server 32-разрядные версии для файлов Excel 2007 (или более поздних версий) или SQL Server 64-разрядные версии для любых файлов Excel.
Второй OPENROWSET
аргумент определяет строку провайдера, разделенные точкой с запятой с первой частью с указанием типа файла:
- Для Excel '97 -2003 (.xls) файлов, используйте Excel 8.0 ,
- Для файлов Excel 2007-2010 (.xlsx) используйте Excel 12.0 Xml.
- Для файлов с макросохранением (.xlsm) Excel 2007-2010 используйте Excel 12.0 Макро.
- Для Excel XML-файлов Excel 2007-2010, не содержащих XML (.xlsb), используйте Excel 12.0.
Вторая часть аргумента указывает путь файла и имя файла. Третий аргумент - это имя таблицы, которую мы хотим получить, с добавлением знака доллара ($) и заключенным в скобки, например, в [Продукты $].
После того, как у вас есть данные во временную таблицу #ProductInfo
, вы можете конвертировать, фильтровать данные по мере необходимости, используя внутреннее соединение, а затем обновить поле Количество:
UPDATE
p
SET
p.Quantity = temp.Quantity
FROM dbo.Product AS p
INNER JOIN #ProductInfo AS temp
ON temp.Item = p.Item
AND temp.Location = p.Location;
он берет меня создать таблицу Excel в для SQL как новой таблицы? – Sinnerv
Вы также можете импортировать данные Excel в существующую таблицу. Просто укажите таблицу, в которую вы хотите импортировать. –