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

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

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

Ответы на вопрос(15)

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

Справочная информация: все зависит от вашей установки Office (Runtime Engines).

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

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

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

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

Службы преобразования данных SQL Server (DTS)Службы интеграции Microsoft SQL Server 2005 (SSIS)SQL Server связанные серверыSQL Server распределенные запросыОбъекты данных ActiveX (ADO) и поставщик Microsoft OLE DB для SQL ServerADO и поставщик 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;
 Wiebe Tijsma25 окт. 2012 г., 22:00
К сожалению, это не работает на 64-битных окнах
 Techboy11 дек. 2011 г., 17:48
Когда я пытаюсь это сделать, я получаю ошибку «Синтаксическая ошибка в предложении FROM». (Microsoft JET Database Engine) '
 user4720618 дек. 2008 г., 17:04
Хм. это означает, что я должен иметь Excel на сервере, а не на моем компьютере. Есть ли способ, чтобы направить его на мой компьютер? Я еще не нашел этот ответ.
 ncubica19 февр. 2013 г., 18:54
Вы можете попробовать этот файл загрузкиmicrosoft.com/en-us/download/details.aspx?id=13255 для 64х я не проверял, но посмотрите обещание ..

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

 user4720617 дек. 2008 г., 22:04
Это не дало мне возможность импортировать в существующую таблицу, только базу данных, и это создаст новую таблицу. (SQLServer 2008)
 user4720618 дек. 2008 г., 17:09
Нашел, как это работает. Благодарю. Теперь я нашел большую проблему. Я использую Management studio 2008, а база данных - 2000. Я ошибочно предположил, что это был 2005 год.
 DCNYAM18 дек. 2008 г., 22:37
Я еще не использовал Management Studio 2008 (мы работаем в 2005 году). Управление студией 2005 года обратно совместимо с 2000 годом.

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

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

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

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

 VenerableAgents06 апр. 2012 г., 22:41
Это (ссылка на сайт) аналогичный метод, который я использую для вставки данных в MySQL (тот же метод можно использовать здесь)
 Nathan DeWitt10 мар. 2010 г., 15:21
Мне всегда кажется, что это самый простой способ ...

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

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

 user4720618 дек. 2008 г., 17:05
НЕТ, КАК ДОСТУП К МОЕЙ МЕСТНОЙ МАШИНЕ?
 SqlACID08 окт. 2014 г., 01:31
Какая ОС? Если он старый, вам может понадобиться установить MDAC
 David Sopko29 сент. 2014 г., 22:34
Я получаю сообщение об ошибке: не удается создать экземпляр поставщика OLE DB "Microsoft.Jet.OLEDB.4.0" для связанного сервера "(null)".
 marc_s18 февр. 2009 г., 17:58
Что ж, вы, вероятно, могли бы создать общий ресурс на своем локальном компьютере и сопоставить сетевой диск с вашего компьютера с SQL Server на этот общий ресурс и таким образом получить доступ к своему файлу

exceltomssqlinsert

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

а данных электронной таблицы и записи их в 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

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

 Brian Knoblauch19 дек. 2012 г., 19:44
Задачи -> Импорт данных не существует в этом меню в 2008 году.
 Nick.McDermaid29 июл. 2014 г., 08:17
Эта опция недоступна, если SSIS не установлен. Если вы используете SSMS на SQL Server с этим установленным, у вас должна быть опция. Если вы работаете на компьютере, на котором установлены только клиентские инструменты (только SSMS), вы не увидите эту опцию.
 Ash Machine14 мар. 2014 г., 19:44
Использование SQL Server 2008 (не R2) Iделать см. Задачи -> Импорт данных при щелчке правой кнопкой мыши по БД.
 Suncat200019 янв. 2012 г., 20:43
Используйте SQL Server Management Studio, чтобы установить соединение с вашей базой данных. Тогда этот ответ имеет смысл. Эта задача запускает мастер импорта и экспорта SQL Server, который включает Microsoft Excel в качестве источника данных. Это отличается от запуска собственного приложения SSIS для импорта и экспорта, у которого нет этой опции} :-(.

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

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

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

включая проверку ... вам может понравиться этот инструмент 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

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
 Trufa14 июн. 2011 г., 18:11
пожалуйста, отформатируйте ваш код соответствующим образом. Спасибо!

http://tools.perceptus.ca/text-wiz.php?ops=7 Вы пробовали это?

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

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

-D

Ваш ответ на вопрос