Импортируйте столбцы электронной таблицы Excel в базу данных SQL Server -- sql-server поле с участием excel поле с участием sql-server-2008 поле с участием import поле с участием etl пол Связанный проблема

Import Excel spreadsheet columns into SQL Server database


64
vote

проблема

русский

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

Есть ли какие-либо удобные параметры кода?

Английский оригинал

I have an Excel spreadsheet that I want to import select columns into my SQL Server 2008 database table. The wizard didn't offer that option.

Do any easy code options exist?

</div
              

Список ответов

51
 
vote

После подключения к базе данных SQL Server 2005, от окна Explorer Object, щелкните правой кнопкой мыши в базе данных, в которую вы хотите импортировать таблицу. Выберите задачи - & gt; Импорт данных. Это простой инструмент и позволяет «отображать» входящие данные в соответствующую таблицу. Вы можете сохранить скрипты, чтобы снова запустить, когда это необходимо.

 

Once connected to Sql Server 2005 Database, From Object Explorer Window, right click on the database which you want to import table into. Select Tasks -> Import Data. This is a simple tool and allows you to 'map' the incoming data into appropriate table. You can save the scripts to run again when needed.

</div
 
 
       
       
25
 
vote

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;   
 

Microsoft suggest several methods:

  • SQL Server Data Transformation Services (DTS)
  • Microsoft SQL Server 2005 Integration Services (SSIS)
  • SQL Server linked servers
  • SQL Server distributed queries
  • ActiveX Data Objects (ADO) and the Microsoft OLE DB Provider for SQL Server
  • ADO and the Microsoft OLE DB Provider for Jet 4.0

If the wizard (DTS) isn't working (and I think it should) you could try something like this http://www.devasp.net/net/articles/display/771.html which basically suggests doing something like

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; 
</div
 
 
     
     
12
 
vote

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

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

 

This may sound like the long way around, but you may want to look at using Excel to generate INSERT SQL code that you can past into Query Analyzer to create your table.

Works well if you cant use the wizards because the excel file isn't on the server

</div
 
 
 
 
7
 
vote

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

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

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

 

You could use OPENROWSET, something like:

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

Just make sure the path is a path on the server, not your local machine.

</div
 
 
       
       
4
 
vote
 <код> 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 SettingsabhisharmaDesktopexlImportExcel2SQLServerImportExcel2SQLServerexample.xls;IMEX=1',                 'SELECT * FROM [Sheet1$]')  select * from temptable   
 
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 SettingsabhisharmaDesktopexlImportExcel2SQLServerImportExcel2SQLServerexample.xls;IMEX=1',                 'SELECT * FROM [Sheet1$]')  select * from temptable 
</div
 
 
4
 
vote

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

Один пример здесь: http: //www.ozgrid .com / forum / showthread.php? t = 26621 & amp; 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   
 

Another option is to use VBA in Excel, and write a macro to parse the spreadsheet data and write it into SQL.

One example is here: 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 
</div
 
 
3
 
vote

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

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

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

 

By 'the wiz' I'm assuming you're talking about the 'SQL Server Import and Export Wizard'. (I'm also pretty new so I don't understand most questions, much less most answers, but I think I get this one). If so couldn't you take the spreadsheet, or a copy of it, delete the columns you don't want imported and then use the wizard?

I've always found the ability to do what I need with it and I'm only on SQL Server 2000 (not sure how other versions differ).

Edit: In fact I'm looking at it now and I seem to be able to choose which columns I want to map to which rows in an existing table. On the 'Select Source Tables and Views' screen I check the datasheet I'm using, select the 'Destination' then click the 'Edit...' button. From there you can choose the Excel column and the table column to map it to.

</div
 
 
3
 
vote

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

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

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

 

If you would like a visual tool with Desktop interface including validation .. you may well like this Excel tool. You can also use the tool to create multi user data-edit tasks, or even paste data to SQL server from any source..

How to Validate and Import Excel spreadsheet to SQL Server database:

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

</div
 
 
2
 
vote

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

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

 

Microsoft Access is another option. You could have a Access database locally on your machine that you import the excel spreadsheets into (wizards available) and link to the the SQL Server database tables via ODBC.

You could then design a query in access that appends data from the Excel spreadsheet to the SQL Server Tables.

</div
 
 
1
 
vote

Лучший инструмент, который я использовал, это http: //tools.perceptus .ca / text-wiz.php? Ops = 7 Вы пробовали это?

 

The best tool i've ever used is http://tools.perceptus.ca/text-wiz.php?ops=7 Did you try it?

</div
 
 
1
 
vote

Я думаю, что это поможет вам

Посещение http: / /social.msdn.microsoft.com/forums/en-us/sqlgetstarteded/thrad/78f8e980-0bb6-4a48-b1b1-5f65bca1d511

 

I think it will help you

Visit http://social.msdn.microsoft.com/Forums/en-US/sqlgetstarted/thread/78f8e980-0bb6-4a48-b1b1-5f65bca1d511

</div
 
 
0
 
vote

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

 

The import wizard does offer that option. You can either use the option to write your own query for the data to import, or you can use the copy data option and use the "Edit Mappings" button to ignore columns you do not want to import.

</div
 
 
     
     
0
 
vote

Excel + SQLCMD + Perl = exceltomssqlinsert

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

 

Excel + SQLCMD + Perl = exceltomssqlinsert

and you can use your Excel as frond-end to MSSQL db ... Note the truncate table at the beginning of each generated sql insert file ...

</div
 
 
0
 
vote

Я использовал DTS (теперь известный как SQL Server Import и Export Mazard). Я использовал этот этап Учебник < / a> Что отлично подходит для меня даже в SQL 2008 и Excel 2010 (14.0)

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

-d

 

I have used DTS (now known as SQL server Import and Export Wizard). I used the this tutorial which worked great for me even in Sql 2008 and excel 2010 (14.0)

I hope this helps

-D

</div
 
 
0
 
vote

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

Фон: Все зависит от установки вашего офиса (двигателей Runtimes).

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

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

Чтобы получить обзор на runtimes см. " Microsoft.ace.Oledb.12.0 'Provider не зарегистрирован на локальном компьютере

 

First of all, try the 32 Bit Version of the Import Wizard. This shows a lot more supported import formats.

Background: All depends on your Office (Runtimes Engines) installation.

If you dont't have Office 2007 or greater installed, the Import Wizard (32 Bit) only allows you to import Excel 97-2003 (.xls) files.

If you have the Office 2010 and geater (comes also in 64 Bit, not recommended) installed, the Import Wizard also supports Excel 2007+ (.xlsx) files.

To get an overview on the runtimes see 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine

</div
 
 

Связанный проблема

23  Клиент браузера Microsoft SQL [Закрыто]  ( Microsoft sql browser client ) 
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»> закрыт. Этот вопрос не соответствует Рекомендациям переполнения ...

0  Код ошибки триггера SQL  ( Sql trigger error code ) 
Я пытаюсь разработать триггер SQL Server, но, похоже, это выбрасывает для меня ошибку, когда я обновляю записи, которые имеют одинаковые значения с помощью зн...

0  SQL Server - получить столбец, у которого есть конкретное значение  ( Sql server get column who have specific value ) 
У меня есть запрос SQL, который возвращает: <код> id | value 1 a 1 a 1 b 2 a 2 a Я хочу получить только...

0  Скопируйте все таблицы от MS Access (.mdb) на другой MS Access (.mdb) сразу (только структура)  ( Copy all the tables from ms access mdb to another ms access mdb at once str ) 
Как скопировать все таблицы (глобальные и локальные) из одного файла доступа MS (.mdb) в другой файл доступа MS (.mdb) только со структурой. Файл MS Access св...

2  CTE с динамическим запросом  ( Cte with dynamic query ) 
У меня есть динамический запрос, который я звоню, и я помещаю результат набор в переменной таблице <код> INSERT INTO @outTable EXEC sp_executesql @query; ...

2  Условная сумма на основе даты (сверхурочная сумма по контракту)  ( Conditional sum based on date sum overtime by contract ) 
У меня есть стол с <Код> ID (Commonse_id), <код> Name , <код> time_worked , <код> time_to_work , <код> Contract_Start_Date , <код> Date_of_Entry . Эта таблиц...

0  Подзапрос в пункте in () вызывает ошибку  ( Subquery in an in clause causing error ) 
Я на SQL Server 2005, и я получаю ошибку, которую я почти не должен получать. <код> Msg 512, Level 16, State 1, Procedure spGetSavedSearchesByAdminUser, Lin...

1  Получение строки сразу после вставки возвращается нет результата  ( Getting row right after insert returns no result ) 
Я бегут тесты подразделения, и когда я пытаюсь вставить данные в базу данных и получить его сразу после того, как я ничего не получаю (я пробовал с <код> Data...

0  Сервер SQL Server Rowing Rows Mathet - без «заказа»  ( Sql server paging rows by offset without order by ) 
Производственный стол мой содержит более миллиона записей. Требование требует для поискового запроса для извлечения записей по смещению и предельным параметра...

0  Конвертировать стол в другой формат в MSSQL  ( Convert table to another format in mssql ) 
Я сталкиваюсь с проблемой с MS-SQL в получении вывода из таблицы в определенном формате. . Имя |. StringValue |. Parent_id. Полевое имя |. Testheader1 |. 3. ...

-1  SQL Server для моего SQL  ( Sql server to my sql ) 
У меня есть новый проект от моего учителя, чтобы преобразовать базу данных в другую. Как я могу преобразовать базу данных MS SQL в MySQL с помощью Java? ...

0  Создайте триггер, чтобы проверить определенные столбцы  ( Create a trigger to check specific columns ) 
Я хотел бы иметь триггер, который проверяет, если столбец имеет определенное значение, я знаю, что я должен использовать иностранные ключи для этого, но в это...

0  Не читайте текстовые данные на таблицу SQL в C #  ( Not reading text data to sql table in c sharp ) 
Поэтому я следовал большему количеству помощи, которую я мог найти здесь. Я создал программу C #, которая читает из текстового файла и вставляет в таблицу баз...

116  SQL Server, эквивалентный Oracle создать или заменить вид  ( Sql server equivalent to oracles create or replace view ) 
в Oracle, я могу повторно создать вид с одним оператором, как показано здесь: <код> CREATE OR REPLACE VIEW MY_VIEW AS SELECT SOME_FIELD FROM SOME_TABLE WHER...

1  Выполнить файл SQL, возвращать результаты как Pandas DataFrame  ( Execute sql file return results as pandas dataframe ) 
У меня есть сложный запрос SQL Server, который я хотел бы выполнить из Python и вернуть результаты в виде файла PandaFrame. Моя база данных читается только ...