Импорт столбцов электронной таблицы Excel в базу данных SQL Server - PullRequest
63 голосов
/ 17 декабря 2008

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

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

Ответы [ 15 ]

50 голосов
/ 09 июня 2010

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

24 голосов
/ 18 декабря 2008

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;
12 голосов
/ 22 декабря 2008

Может показаться, что это далеко, но вы можете использовать Excel для генерации INSERT SQL-кода, который вы можете вставить в Query Analyzer для создания таблицы.

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

7 голосов
/ 18 декабря 2008

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

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

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

4 голосов
/ 03 сентября 2011

Другой вариант - использовать 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
4 голосов
/ 14 июня 2011
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
3 голосов
/ 06 февраля 2014

Если вам нужен визуальный инструмент с интерфейсом рабочего стола, включая валидацию, вам вполне может понравиться этот инструмент 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

3 голосов
/ 18 декабря 2008

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

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

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

2 голосов
/ 12 февраля 2010

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

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

1 голос
/ 21 мая 2013
...