2013-08-30 4 views
1

У меня есть файл Excel 2007, содержащий около 301808 строк и 2 столбца. Я пытался использовать SSIS для импорта, но не могу использовать Excel excel. Затем я решил попробовать создать связанный сервер на SQL Server, следуя инструкциям:Импорт файла Excel 2007 с использованием SQL Server 2005

  • В SQL Server Management Studio разверните объекты сервера в обозревателе объектов.
  • Щелкните правой кнопкой мыши Связанные серверы и выберите Новый связанный сервер.
  • На левой панели выберите страницу «Общие», а затем выполните следующие действия:
  • В первом текстовом поле введите имя связанного сервера.
  • Выберите параметр «Другой источник данных».
  • В списке «Поставщик» выберите Поставщик OLE DB Microsoft Jet 4.0.
  • В поле Имя продукта введите Excel для имени источника данных OLE DB.
  • В поле «Источник данных» введите полный путь и имя файла Excel.
  • В поле Строка провайдера введите Excel 8.0 для Excel 2002, Excel 2000 или Excel 97 - книгу.
  • Нажмите «ОК», чтобы создать новый связанный сервер.

Отсюда: http://support.microsoft.com/kb/306397/EN-US

Однако инструкция распространяется только предыдущие первенствовать файлы не 2007, так что я посмотрел строки подключения на 2007 год и использовал Excel 12.0 вместо Excel 8.0 в настройках связанного сервера:

  • Поставщик: Microsoft Office Access 12.0 Database Engine OLE DB
  • Имя поставщика продукта: источник данных Excel: C: \ Documents и
  • Setti NGS \ UserName \ Desktop \ Main \ FilesIns \ MyExcelFile.xlsx Provider
  • Строка: Excel 12,0
  • Расположение:
  • Каталог:

Затем я получил эту ошибку:

The OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "EXCEL_MY_FILE" does not contain the table "Report 1$". The table either does not exist or the current user does not have permissions on that table.

Я пошел в систему безопасности и добавил nt authority \ system на всякий случай, если это проблема с разрешениями, и это все равно дало мне ошибку выше.

Таблица Excel называется «Отчет 1».

Я также попытался с помощью OPENROWSET в SQL, чтобы посмотреть, что случилось, и я получил это:

SQL Server blocked access to STATEMENT 'OpenRowset/OpenDatasource' of component 'Ad Hoc Distributed Queries' because this component is turned off as part of the security configuration for this server.

Затем я попробовал код в ссылку ниже, чтобы увидеть, если это помогло мне использовать OPENROWSET:

How to enable Ad Hoc Distributed Queries

EXEC sp_configure 'show advanced options', 1 
RECONFIGURE 
GO 
EXEC sp_configure 'ad hoc distributed queries', 1 
RECONFIGURE 
GO 

И получил:

OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" returned message "Syntax error in FROM clause.". Msg 7321, Level 16, State 2, Line 1 An error occurred while preparing the query "Select * from C:\Documents and Settings\UserName\Desktop\Main\FilesIns\MyExcelFile.xlsx" for execution against OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)".

Так что я не уверен, правильны ли значения в моей инструкции openrowset.

Действительно просто ищет способ импортировать этот файл в таблицу sql без использования SSIS - я все равно не могу его использовать.

Благодаря

Эндрю

ответ

0

Под вашим sp_Reconfigure, видеть, что вы ссылаетесь на статью здесь .. Тем не менее, я думаю, что вам, возможно, придется пойти в Microsoft вместо ..

http://technet.microsoft.com/en-us/library/ms187569%28v=sql.90%29.aspx

И есть довольно много примеров использования OPENROWSET здесь -

http://technet.microsoft.com/en-us/library/ms190312%28v=sql.90%29.aspx

Смежные вопросы