Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Импорт DBF в MSSQL  [new]
bamper78
Member

Откуда:
Сообщений: 114
Добрый день.

Просьба посодействовать.

Необходимо создать скритп импорта dbf в базу

посмотрев форум, тема популярна, но столкнулся с проблемой, а именно...

выполняю:
sp_configure 'show advanced options',1
reconfigure with override
go
sp_configure 'Ad Hoc Distributed Queries',1
reconfigure with override
go
 
sp_configure 'show advanced options',1
reconfigure with override


SELECT *
FROM OPENROWSET('MSDASQL','Driver={Microsoft dBase Driver (*.dbf)};
                C:\MVK\tables\;DefaultDir=C:\MVK\tables\;SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Null=No;Deleted=No;',
                'SELECT * FROM C:\MVK\tables\codtech.dbf')


Ошибка -
Поставщик OLE DB "MSDASQL" для связанного сервера "(null)" вернул сообщение "[Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию".
Сообщение 7303, уровень 16, состояние 1, строка 1
Не удалось проинициализировать объект источника данных поставщика OLE DB "MSDASQL" для связанного сервера "(null)".


файлы dbf лежат на сервере sql

что еще необходимо настроить ?

Спасибо.
12 авг 13, 12:23    [14695785]     Ответить | Цитировать Сообщить модератору
 Re: Импорт DBF в MSSQL  [new]
Konst_One
Member

Откуда:
Сообщений: 11543
SELECT * FROM OPENROWSET('MSDASQL',
'Driver={Microsoft dBase Driver (*.dbf)};DefaultDir=C:\MVK\tables;SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Null=No;Deleted=No;',
'SELECT * FROM codtech.dbf')
12 авг 13, 12:33    [14695886]     Ответить | Цитировать Сообщить модератору
 Re: Импорт DBF в MSSQL  [new]
bamper78
Member

Откуда:
Сообщений: 114
Konst_One
SELECT * FROM OPENROWSET('MSDASQL',
'Driver={Microsoft dBase Driver (*.dbf)};DefaultDir=C:\MVK\tables;SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Null=No;Deleted=No;',
'SELECT * FROM codtech.dbf')
та же ошибка
12 авг 13, 12:40    [14695970]     Ответить | Цитировать Сообщить модератору
 Re: Импорт DBF в MSSQL  [new]
qwerty112
Guest
bamper78,

Рекомендации по оформлению сообщений в форуме п.4
12 авг 13, 12:49    [14696042]     Ответить | Цитировать Сообщить модератору
 Re: Импорт DBF в MSSQL  [new]
Александр52
Member

Откуда: Кокосовые острова ส็็็็็
Сообщений: 5133
qwerty112, в свое время решал эту задачу через xml, попробуйте, возможно и вам подойдет.
12 авг 13, 13:03    [14696171]     Ответить | Цитировать Сообщить модератору
 Re: Импорт DBF в MSSQL  [new]
bamper78
Member

Откуда:
Сообщений: 114
[quot bamper78][quot Konst_One]
SELECT * FROM OPENROWSET('MSDASQL',
'Driver={Microsoft dBase Driver (*.dbf)};DefaultDir=C:\MVK\tables;SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Null=No;Deleted=No;',
'SELECT * FROM codtech.dbf')

Ошибка - 

[src]Поставщик OLE DB "MSDASQL" для связанного сервера "(null)" вернул сообщение "[Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию".
Сообщение 7303, уровень 16, состояние 1, строка 2
Не удалось проинициализировать объект источника данных поставщика OLE DB "MSDASQL" для связанного сервера "(null)".
12 авг 13, 13:06    [14696208]     Ответить | Цитировать Сообщить модератору
 Re: Импорт DBF в MSSQL  [new]
qwerty112
Guest
Александр52
qwerty112, в свое время решал эту задачу через xml, попробуйте, возможно и вам подойдет.

а добавьте-ка подробностей
- выгрузили/конвертировали файл ДБФ в хмл? - чем ?
- и потом загрузили полученный хмл, так ?

Александр, вы - НЕ ленивый человек ! :)
12 авг 13, 13:07    [14696219]     Ответить | Цитировать Сообщить модератору
 Re: Импорт DBF в MSSQL  [new]
qwerty112
Guest
bamper78,

т-з, у тебя не 64б сервер, случайно ?
12 авг 13, 13:25    [14696357]     Ответить | Цитировать Сообщить модератору
 Re: Импорт DBF в MSSQL  [new]
bamper78
Member

Откуда:
Сообщений: 114
qwerty112
bamper78,

т-з, у тебя не 64б сервер, случайно ?


Microsoft SQL Server 2012 - 11.0.2100.60 (X64)
Feb 10 2012 19:39:15
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)
12 авг 13, 13:51    [14696601]     Ответить | Цитировать Сообщить модератору
 Re: Импорт DBF в MSSQL  [new]
Glory
Member

Откуда:
Сообщений: 104760
bamper78
(64-bit)

А Driver={Microsoft dBase Driver (*.dbf) всю жизнь были 32битными
12 авг 13, 13:52    [14696607]     Ответить | Цитировать Сообщить модератору
 Re: Импорт DBF в MSSQL  [new]
bamper78
Member

Откуда:
Сообщений: 114
Glory,

для х64 есть способ импорта? нужно скриптом, что бы его задействовать в автоматизации.
12 авг 13, 13:57    [14696643]     Ответить | Цитировать Сообщить модератору
 Re: Импорт DBF в MSSQL  [new]
qwerty112
Guest
bamper78
Glory,

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

тут (на форуме) неплохой поиск ...
12 авг 13, 14:09    [14696750]     Ответить | Цитировать Сообщить модератору
 Re: Импорт DBF в MSSQL  [new]
Glory
Member

Откуда:
Сообщений: 104760
bamper78
нужно скриптом, что бы его задействовать в автоматизации.

Если вы под скриптом понимаете исключительно TSQL, то
- искать 64битные драйвера
- ставить рядом 32битный MSSQL, который линковать к 64битному

А автоматизацию можно сделать и через SSIS
12 авг 13, 14:11    [14696769]     Ответить | Цитировать Сообщить модератору
 Re: Импорт DBF в MSSQL  [new]
bamper78
Member

Откуда:
Сообщений: 114
Glory
bamper78
нужно скриптом, что бы его задействовать в автоматизации.

Если вы под скриптом понимаете исключительно TSQL, то
- искать 64битные драйвера
- ставить рядом 32битный MSSQL, который линковать к 64битному

А автоматизацию можно сделать и через SSIS


Ясно, а можно ссылочку, если есть, на пошаговое формирование пакета импорта через ssis

буду благодарен.

Сапсибо
12 авг 13, 14:16    [14696805]     Ответить | Цитировать Сообщить модератору
 Re: Импорт DBF в MSSQL  [new]
bamper78
Member

Откуда:
Сообщений: 114
bamper78,

Вот решение (Создание LinkServer). которое заработало на конфигурации

Microsoft SQL Server 2012 - 11.0.2100.60 (X64)
Feb 10 2012 19:39:15
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)

-- Установить Microsoft Access Database Engine 2010 Redistributable
http://www.microsoft.com/en-us/download/details.aspx?id=13255

--Настройка IIS
http://blog.nkadesign.com/2008/windows-2008-the-microsoftjetoledb40-provider-is-not-registered-on-the-local-machine/

--Сначала разрешения для драйвера
USE master
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1 
 
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1 


--Потом создаем линкед сервер
EXEC sp_addlinkedserver
   @server = 'dbf',
   @srvproduct=N'OLE DB Provider for ACE', 
   @provider = 'Microsoft.ACE.OLEDB.12.0',
   @datasrc = 'C:\MyFolder\MVK\tables',
   @provstr = 'DBASE IV'


--Дополнительно надо настроить настройки безопасности одним из описанных ниже способов иначе будет ошибка
/*
OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "dbf" returned message "Cannot start your application. The workgroup information file is missing or opened exclusively by another user.".
Msg 7399, Level 16, State 1, Line 1
The OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "dbf" reported an error. Authentication failed.
Msg 7303, Level 16, State 1, Line 1
Cannot initialize the data source object of OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "dbf".

Solution to this problem is very simple. Simply follow steps -
1.Open the Management Studio and navigate to Server Objects and then to Linked Server.
2.Right click on your Linked Server Name, and click on Properties.
3.Go to Security Page. Now for solving above problem you have 2 option, you can try any of the below 2 option.

A] Select the option “Be made without using a security context” by clicking on radio button.

OR

B] Select the last option “Be made using this security context ”.
As soon as click on the radio button before “Be made using this security context ”, the“Remote login” and “With password” text boxes become active to be filled in.
Now in the “Remote login”, enter Admin as the login user. Leave the password text box as blank.
Now just click on OK, and now can run the query against your linked server without any error.
*/


SELECT * FROM [dbf]...[codtech]


--Создать таблицы на локальной базе с тойже структурой, что .DBF

-- Импорт .DBF - dbo.[Table]
INSERT INTO [MVK_INBOX].[dbo].[codtech]
           ([NAME]
           ,[CODCLAS]
           ,[CODSCLAS]
           ,[CC111]
           ,[CC222])
SELECT [NAME]
      ,[CODCLAS]
      ,[CODSCLAS]
      ,[CC111]
      ,[CC222] 
FROM [dbf]...[codtech]


Всем спасибо за участие, всем добра!
13 авг 13, 10:20    [14700309]     Ответить | Цитировать Сообщить модератору
 Re: Импорт DBF в MSSQL  [new]
Marchuk
Member

Откуда: Москва
Сообщений: 104
Есть проблема. Файлы с именем более 8 символов , он не отрабатывает.
18 окт 13, 18:09    [15000054]     Ответить | Цитировать Сообщить модератору
 Re: Импорт DBF в MSSQL  [new]
httpal
Member

Откуда:
Сообщений: 1
Только если в 32 битном драйвере при импорте из DBF пустые записи (не NIULL) оставались пустыми, типа пробелами, то теперь с x64 драйвером вместо этих пустых значений или пробелов в DBF при импорте ставятся NULL'ы и insert'ы, update'ы спотыкаются. Что делать, не знаю. Но надо переходить на 2008 x64...
17 июн 14, 06:14    [16173050]     Ответить | Цитировать Сообщить модератору
 Re: Импорт DBF в MSSQL  [new]
Glory
Member

Откуда:
Сообщений: 104760
httpal
Что делать, не знаю.

Написать код так, чтобы insert'ы, update'ы "не спотыкались"
17 июн 14, 10:27    [16173872]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить