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

Откуда:
Сообщений: 3
Доброго времени суток форумчане! Перед мной поставили задачу выполнить перенос данных из dbf (dBase IV) в MSSQL 2008. Исходная программа работающая с данной базой данных написана на Delphi и использует интерфейс BDE для обращений к базе. При попытке перенести базу проблем не возникло. Установил на тестовой машине драйвер ODBC for VIsual FoxPro и через SQL-запрос выполнил импорт.
SELECT * INTO S_CITY FROM OPENROWSET('MSDASQL','DRIVER={Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx)};SourceDB=D:\PROGRAM_DIR\data\;DefaultDir=D:\PROGRAM_DIR\data\;SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Russian;Null=No;Deleted=No;',
 'SELECT * FROM S_CITY') as dBase;

Проблемы возникли в дальнейшем, при попытке обращения к таблице, вылетает следующая ошибка:

[Microsoft][ODBC SQL Server Driver][SQL Server]Недопустимое имя объекта "S_city.dbf".
Переименовывание таблицы в S_CITY.dbf результатов не принесло. Исходников самой программы к сожалению я тоже на руках не имею. Ее разработкой занимается сторонний программист. Сейчас в BDE настроено подключение к MSSQL-серверу через стандартный драйвер идущий в поставке BDE. Схема работы: Программа->BDE->SQL Server Driver->ODBC SQL Server Driver->SQL Server. Прошу Вашей помощи, может быть кто-то сталкивался с подобным?
8 апр 12, 22:27    [12384920]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных их dbf в MSSQL Express 2008  [new]
invm
Member

Откуда: Москва
Сообщений: 9835
Имена объектов, вида S_city.dbf, необходимо отквочивать. Либо как [S_city.dbf], либо как "S_city.dbf", при включенном quoted_identifier. Так что ваше приложение придется переписывать.
8 апр 12, 23:06    [12385047]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных их dbf в MSSQL Express 2008  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31960
invm
Имена объектов, вида S_city.dbf, необходимо отквочивать. Либо как [S_city.dbf], либо как "S_city.dbf", при включенном quoted_identifier. Так что ваше приложение придется переписывать.
Можно ещё сделать схему S_city, а в ней таблицу dbf :-) То есть все таблицы назвать dbf, и сделать каждую в своей схеме.

Хотя непонятно, каким образом прога обращается к данным, что ей надо?

Ну и вообще, перенос с одной СУБД на другую без исходников на 99% обречён на неудачу, хоть обставься задачами.
И даже с исходниками это непросто, учитывая, что даже разработчик это делать отказался.
9 апр 12, 00:07    [12385211]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных их dbf в MSSQL Express 2008  [new]
Asmoday
Member

Откуда:
Сообщений: 3
Спасибо за совет про схемы, что-то не догадался сразу сделать так. К сожалению связи с разработчиком программы сейчас нет. А база программы разрослась более чем до 3 Гб. Держать ее в dbf становится проблематично. При одновременной работе 30+ пользователей начинаются неимоверные нагрузки. Как вариант сейчас поковырялся в скомпиленом файле, hex-редактором, изменил имена всех таблиц, убрав из имени ".fdb".
9 апр 12, 00:31    [12385269]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных их dbf в MSSQL Express 2008  [new]
Asmoday
Member

Откуда:
Сообщений: 3
Возник еще вопрос, возможно ли перенести индексы из *.dbf таблиц? Или же придется руками пересоздавать их в базе?
9 апр 12, 01:17    [12385362]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных их dbf в MSSQL Express 2008  [new]
invm
Member

Откуда: Москва
Сообщений: 9835
Asmoday,

Необходимые индексы придется создавать руками. А вообще вы сильно рискуете своими данными, считая, что приложение, написанное под ФС, будет работать аналогично и в КС.
9 апр 12, 10:14    [12385950]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных их dbf в MSSQL Express 2008  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31960
Asmoday
К сожалению связи с разработчиком программы сейчас нет. А база программы разрослась более чем до 3 Гб. Держать ее в dbf становится проблематично.
Ну, что можно сказать, сами виноваты :-(

Более реальный путь (если быстро) - апгрейд железа, медленный путь - искать разработчика или писать заново.
9 апр 12, 10:42    [12386090]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных их dbf в MSSQL Express 2008  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1316
перекинуть данные из дбф в скл-сервер
как бы не проблема
я бы писал скрипт на VFP ибо лучше знаю
но и так ок
- и через SSIS можно
да и в дельфи что-то было врод датапамп называлось
индексы понятно надо создавать в скл-сервере свои
просто НЕ понятно для Чего это надо ?

Единств. версия - поэкспериментировать - попробовать сделать отчеты

зы как вариант ускорить и ничего не менять попробовать пернести работу апликейшена
на терм. сервер и таскать тока экраны (но свои подводные камни там наверняка тоже есть)
9 апр 12, 15:42    [12388408]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить