Импорт именного диапазона Excel в базу данных SQL - PullRequest
0 голосов
/ 27 января 2019

У меня есть файл Excel «test.xlsx», который содержит лист с именем «SheetName», который содержит именованный диапазон с именем «NamedRange».

Я хочу написать скрипт на Visual Basic для импорта этихименованные диапазоны в базу данных SQL.До сих пор я пробовал openrowset, но не могу найти правильный синтаксис для ссылки на именованный диапазон.Пример запроса, который не работает:

USE [Test_DataBase]
GO
SELECT * INTO New
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0; Database=D:\Test.xlsx', NamedRange);
GO

Ошибка из этого: Поставщик OLE DB "Microsoft.ACE.OLEDB.12.0" для связанного сервера "(null)" не содержиттаблица "NamedRange".Таблица либо не существует, либо текущий пользователь не имеет разрешений для этой таблицы.

Однако я могу импортировать весь рабочий лист, используя:

USE [Test_DataBase]
GO
SELECT * INTO New
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0; Database=D:\Test.xlsx', SheetName$);
GO

Я также попытался:

USE [Test_DataBase]
GO
SELECT * INTO New
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0; Database=D:\Test.xlsx', SheetName$NamedRange);
GO

Но это приводит к следующей ошибке: Поставщик OLE DB "Microsoft.ACE.OLEDB.12.0" для связанного сервера "(null)" не содержит таблицу "SheetName $ NamedRange".Таблица либо не существует, либо текущий пользователь не имеет разрешений для этой таблицы.

Итак, можно ли на самом деле использовать openrowset для ссылки на именованные диапазоны?Если нет, то есть ли альтернативный метод, который я мог бы использовать вместо этого?

* Это мой первый вопрос, я надеюсь, что я достаточно ясен и не нарушил никаких правил!

Крейг

Ответы [ 2 ]

0 голосов
/ 08 марта 2019

Сначала установите драйвер по ссылке ниже.

https://www.microsoft.com/en-us/download/details.aspx?id=13255

sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
GO


USE YourDatabase;
GO
SELECT * INTO Table1
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
    'Excel 12.0; Database=C:\your_path\test.xlsx', [Sheet1$nr]);
GO
-- 'nr' is your named range

Для получения более подробной информации см. Эти ссылки.

http://www.ashishblog.com/importexport-excel-xlsx-or-xls-file-into-sql-server/

https://www.red -gate.com / простой разговор / SQL / TSQL-программирование / вопросы-о-с использованием TSQL-к-импорту-первенствует-данные, что вы были слишком shy-to-ask / # шестое

https://www.excel -sql-server.com / excel-sql-сервер-импорт-экспорт-использование-vba.htm

0 голосов
/ 27 января 2019
  1. Вы можете использовать SSIS.

  2. Вы можете использовать мастер "импорта данных": щелкните правой кнопкой мыши БД -> Задачи -> Импорт данных

enter image description here

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