|
|||||||
Как импортировать данные из Excel в SQL Server
Время создания: 27.12.2018 08:01
Раздел: Разные закладки - Microsoft SQL Server - VBA и MS Sql Server
Запись: xintrea/mytetra_db_adgaver_new/master/base/15458868757f0tos8l3w/text.html на raw.githubusercontent.com
|
|||||||
|
|||||||
Применимо к: Microsoft SQL Server 2005 Developer EditionMicrosoft SQL Server 2005 Enterprise EditionMicrosoft SQL Server 2005 Standard Edition СодержаниеАННОТАЦИЯ Описание приема Требования Примеры Import или Append Использование DTS или SSIS Использование связанного сервера Использование распределенных запросов Использование ADO и SQLOLEDB Использование ADO и Поставщика данных Jet Устранение неполадок АннотацияВ этом пошаговом руководстве описываются различные способы импорта данных из листов Microsoft Excel в базы данных Microsoft SQL Server. Описание примеровВ примерах, приведенных в данной статье, импорт данных Excel выполняется с помощью следующих функций:
ТребованияВ приведенном ниже списке перечислены рекомендованное оборудование, программное обеспечение, сетевая инфраструктура, а также необходимые пакеты обновления:
В ряде разделов данной статьи предполагается, что пользователь обладает достаточными знаниями в следующих областях:
ПримерыImport или AppendВ примерах команд SQL, используемых в статье, показаны запросы Create Table для импорта данных Excel в новую таблицу SQL Server с использованием конструкций SELECT...INTO...FROM. При сохранении ссылок на объекты-источники и получатели выражения, приведенные в примерах, могут быть преобразованы в запросы Append с использованием конструкций INSERT INTO...SELECT...FROM. Использование DTS или SSISДля импорта данных Excel в таблицы SQL Server могут быть использованы мастер импорта служб преобразования данных (DTS) SQL Server или мастер импорта и экспорта SQL Server. При работе с мастером и выборе исходных таблиц Excel помните, что имена объектов Excel со знаком доллара ($) являются именами листов (например, Лист1$), а имена объектов без знака доллара являются названиями именованных диапазонов Excel. Использование связанного сервераДля упрощения запросов книга Excel может быть настроена как связанный сервер в SQL Server. Для получения дополнительных сведений щелкните указанный ниже номер статьи базы знаний Майкрософт: 3 06397 ИНСТРУКЦИЯ: Использование Excel со связанными серверами SQL Server и распределенными запросами Следующий код импортирует данные из рабочего листа «Customers» связанного сервера Excel «EXCELLINK» в новую таблицу SQL Server с именем XLImport1: SELECT * INTO XLImport1 FROM EXCELLINK...[Customers$] При использовании OPENQUERY источнику может быть передан сквозной запрос: SELECT * INTO XLImport2 FROM OPENQUERY(EXCELLINK, 'SELECT * FROM [Customers$]') Использование распределенных запросовЕсли устанавливать существующее подключение к книге Excel как связанному серверу нежелательно, данные могут быть импортированы с использованием функций OPENDATASOURCE или OPENROWSET. В следующих примерах кода также производится импорт данных из рабочего листа Excel «Customers» в новые таблицы SQL Server: SELECT * INTO XLImport3 FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', 'Data Source=C:\test\xltest.xls;Extended Properties=Excel 8.0')...[Customers$] SELECT * INTO XLImport4 FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:\test\xltest.xls', [Customers$]) SELECT * INTO XLImport5 FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:\test\xltest.xls', 'SELECT * FROM [Customers$]') Использование ADO и SQLOLEDBСинтаксис «распределенных запросов», приведенный в разделе Использование распределенных запросов , может быть использован также в приложении ADO для импорта данных Excel в SQL Server, если для подключения к SQL Server используется Microsoft OLE DB для SQL Server (SQLOLEDB). Для работы следующего примера программы на Visual Basic 6.0 требуется добавление ссылки на проект в объекты данных ActiveX (ADO). В этом примере показано использование функций OPENDATASOURCE и OPENROWSET для подключения SQLOLEDB. Dim cn As ADODB.Connection Dim strSQL As String Dim lngRecsAff As Long Set cn = New ADODB.Connection cn.Open "Provider=SQLOLEDB;Data Source=<server>;" & _ "Initial Catalog=<database>;User ID=<user>;Password=<password>" 'Import by using OPENDATASOURCE. strSQL = "SELECT * INTO XLImport6 FROM " & _ "OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', " & _ "'Data Source=C:\test\xltest.xls;" & _ "Extended Properties=Excel 8.0')...[Customers$]" Debug.Print strSQL cn.Execute strSQL, lngRecsAff, adExecuteNoRecords Debug.Print "Records affected: " & lngRecsAff 'Import by using OPENROWSET and object name. strSQL = "SELECT * INTO XLImport7 FROM " & _ "OPENROWSET('Microsoft.Jet.OLEDB.4.0', " & _ "'Excel 8.0;Database=C:\test\xltest.xls', " & _ "[Customers$])" Debug.Print strSQL cn.Execute strSQL, lngRecsAff, adExecuteNoRecords Debug.Print "Records affected: " & lngRecsAff 'Import by using OPENROWSET and SELECT query. strSQL = "SELECT * INTO XLImport8 FROM " & _ "OPENROWSET('Microsoft.Jet.OLEDB.4.0', " & _ "'Excel 8.0;Database=C:\test\xltest.xls', " & _ "'SELECT * FROM [Customers$]')" Debug.Print strSQL cn.Execute strSQL, lngRecsAff, adExecuteNoRecords Debug.Print "Records affected: " & lngRecsAff cn.Close Set cn = Nothing Использование ADO и поставщика данных JetВ примере из предыдущего раздела при импорте из Excel в SQL для связи с получателем использовались ADO и поставщик SQLOLEDB. Для подключения к источнику Excel можно воспользоваться поставщиком данных OLE DB для Jet 4.0. Используя в выражениях SQL особые конструкции, имеющие три различных формата, база данных Jet может ссылаться на внешние базы данных:
В этом разделе для создания подключения ODBC к базе данных SQL Server используется третий формат. Может использоваться имя источника данных (DSN) ODBC или строка подключения без определения DSN: DSN: [odbc;DSN=<DSN name>;UID=<user>;PWD=<password>] DSN-less: [odbc;Driver={SQL Server};Server=<server>;Database=<database>; UID=<user>;PWD=<password>] Для работы следующего примера программы на Visual Basic 6.0 требуется добавление ссылки на проект в ADO. В примере показан импорт данных Excel в SQL Server через подключение ADO с использованием поставщика данных Jet 4.0. Dim cn As ADODB.Connection Dim strSQL As String Dim lngRecsAff As Long Set cn = New ADODB.Connection cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\test\xltestt.xls;" & _ "Extended Properties=Excel 8.0"
'Import by using Jet Provider. strSQL = "SELECT * INTO [odbc;Driver={SQL Server};" & _ "Server=<server>;Database=<database>;" & _ "UID=<user>;PWD=<password>].XLImport9 " & _ "FROM [Customers$]" Debug.Print strSQL cn.Execute strSQL, lngRecsAff, adExecuteNoRecords Debug.Print "Records affected: " & lngRecsAff
cn.Close Set cn = Nothing Для импорта данных Excel в другие базы данных Microsoft Access, базы данных индексно-последовательного метода доступа (ISAM) или базы ODBC также могут использоваться конструкции, поддерживаемые поставщиком данных Jet. Устранение неполадок
2 99484 ПРОБЛЕМА: При использовании ADOX для получения столбцов таблицы Access столбцы упорядочиваются по алфавиту 1 94124 ПРОБЛЕМА: При использовании DAO OpenRecordset данным в Excel присваивается значение NULL |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|