Импорт таблиц электронной таблицы Excel в базу данных SQL Server

У меня есть таблица Excel, в которой я хочу импортировать столбцы выбора в таблицу базы данных SQL Server 2008. Мастер не предлагал эту опцию.

Существуют ли какие-либо простые варианты кода?

Ответ 1

После подключения к базе данных Sql Server 2005, в окне обозревателя объектов щелкните правой кнопкой мыши на базе данных, в которую вы хотите импортировать таблицу. Выберите Задачи → Импорт данных. Это простой инструмент и позволяет вам "отображать" входящие данные в соответствующую таблицу. Вы можете сохранить сценарии для запуска снова, когда это необходимо.

Ответ 2

Microsoft предлагает несколько методов:

  • Службы преобразования данных SQL Server (DTS)
  • Службы интеграции Microsoft SQL Server 2005 (SSIS)
  • Связанные серверы SQL Server
  • Распространенные запросы SQL Server
  • Объекты данных ActiveX (ADO) и поставщик Microsoft OLE DB для SQL Server
  • ADO и поставщик Microsoft OLE DB для Jet 4.0

Если мастер (DTS) не работает (и я думаю, что он должен), вы можете попробовать что-то вроде http://www.devasp.net/net/articles/display/771.html, которое в основном предлагает сделать что-то вроде

INSERT INTO [tblTemp] ([Column1], [Column2], [Column3], [Column4])

SELECT A.[Column1], A.[Column2], A.[Column3], A.[Column4]
FROM OPENROWSET 
('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:\Excel.xls;HDR=YES', 'select * from [Sheet1$]') AS A;

Ответ 3

Это может показаться длинным, но вы можете захотеть использовать Excel для генерации кода INSERT, который вы можете пропустить в Query Analyzer для создания вашей таблицы.

Хорошо работает, если вы не можете использовать мастеров, потому что файл excel не находится на сервере

Ответ 4

Вы можете использовать OPENROWSET, что-то вроде:

SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
  'Excel 8.0;IMEX=1;HDR=NO;DATABASE=C:\FILE.xls', 'Select * from [Sheet1$]'

Просто убедитесь, что путь - это путь на сервере, а не локальная машина.

Ответ 5

go
sp_configure 'show advanced options',1  
reconfigure with override  
go  
sp_configure 'Ad Hoc Distributed Queries',1  
reconfigure with override  
go
SELECT * into temptable
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
                'Excel 8.0;Database=C:\Documents and Settings\abhisharma\Desktop\exl\ImportExcel2SQLServer\ImportExcel2SQLServer\example.xls;IMEX=1',
                'SELECT * FROM [Sheet1$]')

select * from temptable

Ответ 6

Другой вариант - использовать VBA в Excel и написать макрос для анализа данных электронной таблицы и записи в SQL.

Один пример здесь: http://www.ozgrid.com/forum/showthread.php?t=26621&page=1

Sub InsertARecord() 
Dim cnt As ADODB.Connection 
Dim rst As ADODB.Recordset 
Dim stCon As String, stSQL As String 
Set cnt = New ADODB.Connection 
Set rst = New ADODB.Recordset 

stCon = "Provider=MSDASQL.1;Persist Security Info=False;Data Source=JOEY" 
cnt.ConnectionString = stCon 
stSQL = "INSERT INTO MyTable (Price)" 
stSQL = stSQL & "VALUES (500)" 

cnt.Open 
rst.Open stSQL, cnt, adOpenStatic, adLockReadOnly, adCmdText 

If CBool(rst.State And adStateOpen) = True Then rst.Close 
Set rst = Nothing 
If CBool(cnt.State And adStateOpen) = True Then cnt.Close 
Set cnt = Nothing 

End Sub

Ответ 7

В разделе "wiz" я предполагаю, что вы говорите об "Мастере импорта и экспорта SQL Server". (Я тоже довольно новичок, поэтому я не понимаю большинства вопросов, а тем более большинство ответов, но я думаю, что получаю это). Если вы не могли взять таблицу или ее копию, удалите столбцы, которые вы не хотите импортировать, а затем используйте мастер?

Я всегда находил способность делать то, что мне нужно, и я только на SQL Server 2000 (не знаю, как отличаются другие версии).

Изменить: на самом деле я смотрю на него сейчас, и я, кажется, могу выбрать, какие столбцы я хочу сопоставить с какими строками в существующей таблице. На экране "Выберите исходные таблицы и виды" я проверяю таблицу, которую я использую, выберите "Назначение" и нажмите кнопку "Изменить...". Оттуда вы можете выбрать столбец Excel и столбец таблицы для его сопоставления.

Ответ 8

Если вы хотите визуальный инструмент с интерфейсом Desktop, включая проверку, вам может понравиться этот инструмент Excel. Вы также можете использовать этот инструмент для создания многопользовательских задач редактирования данных или даже вставки данных на SQL-сервер из любого источника.

Как проверить и импортировать электронную таблицу Excel в базу данных SQL Server:

http://leansoftware.net/en-us/help/excel-database-tasks/worked-examples/how-to-import-excel-spreadsheet-to-sql-server-data.aspx

Ответ 9

Microsoft Access - это еще один вариант. У вас может быть локальная база данных Access на вашем компьютере, в которой вы импортируете таблицы Excel (доступные wizards) и ссылку на таблицы базы данных SQL Server через ODBC.

Затем вы можете создать запрос в доступе, который добавляет данные из электронной таблицы Excel в таблицы SQL Server.

Ответ 12

Мастер импорта предлагает эту опцию. Вы можете использовать опцию для записи собственного запроса для импортируемых данных или использовать параметр "Копировать данные" и использовать кнопку "Редактировать сопоставление", чтобы игнорировать столбцы, которые вы не хотите импортировать.

Ответ 13

Excel + SQLCMD + Perl = exceltomssqlinsert

и вы можете использовать Excel как конец для MSSQL db... Обратите внимание на таблицу обрезания в начале каждого сгенерированного файла вставки sql...

Ответ 14

Я использовал DTS (теперь известный как мастер импорта и экспорта SQL-сервера). Я использовал этот учебник, который отлично подойдет для меня даже в Sql 2008 и excel 2010 (14.0)

Я надеюсь, что это поможет

-D

Ответ 15

Прежде всего, попробуйте 32-битную версию мастера импорта. Это показывает гораздо более поддерживаемые форматы импорта.

Фон: Все зависит от установки вашего Office (Runtimes Engines).

Если у вас не установлен Office 2007 или выше, мастер импорта (32 бит) позволяет импортировать файлы Excel 97-2003 (.xls).

Если у вас установлен Office 2010 и geater (поставляется также с 64-битным, не рекомендуется), мастер импорта также поддерживает файлы Excel 2007+ (.xlsx).

Чтобы получить обзор времени выполнения, см. 'Microsoft.ACE.OLEDB.12.0' поставщик не зарегистрирован на локальном компьютере