8°C
завтра: 7°C
Погода в Перми
8°C
вечером9°C
ночью3°C
завтра7°C
Подробно
 63,79
−0.1742
Курс USD ЦБ РФна 23 апреля
63,7860
−0.1742
 71,72
−0.2022
Курс EUR ЦБ РФна 23 апреля
71,7210
−0.2022
PRM.Форум /Компьютеры Интернет Связь / Программирование /

Миграция lданных из локальной базы в MS SQL

  • veteran

    Сообщений: 1062

    Есть программа по БД, написанная в локальной базе Paradox. Хочу переписать программу на основе серверных технологий. Для начала хотелось бы перенести базу вместе с данными из Paradox в MS SQL.. Должны быть какие то утилиты. Кто знаком- подскажите направление поиска, пожалуйста.

    Лучше сделать и пожалеть об этом, чем пожалеть о том, что не сделал

  • activist

    Сообщений: 109

    Сам не пробовал, но может, есть смысл посмотреть Microsoft SQL Server Management Studio? По крайней мере, там в командах для базы данных есть импорт данных, и при выборе источника данных можно указать .NET framework provider for Odbc, а уж базу Парадокса подключить к Odbc можно.

  • veteran

    Сообщений: 1062

    Спасибо. Посмотрю. Если получится сообщу через форум.

    Лучше сделать и пожалеть об этом, чем пожалеть о том, что не сделал

  • activist

    Сообщений: 109

    Да, и еще. Есть родная борландовская утилитка DataPump. По крайней мере, у меня в меню Delphi 7 она имеется. В справке написано, что она переносит как структуру, так и содержимое из исходной базы в конечную. Причем SQL Server как возможный вариант там упоминается. Более того, в справке имеется одно замечание, касающееся именно перекачки в Microsoft SQL Server.

  • v.i.p.

    Сообщений: 15262

    Из скуля подключиться к парадоксовским таблицам:
    OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','Data Source="+ПутьКБазе+";Jet OLEDB:Database Password=""jIGGAe"";Extended Properties=""Paradox 5.x""')...ИмяТаблицы
    и перелить данные в скулевые таблицы.

  • гундос

    Сообщений: 16232

    Ну чем залить данные то не такая проблема. Проблема сделать это корректно. Поясню, если в таблицах есть identity-поля, то нужно "перелить" так, чтобы коды сохранились, иначе будет не база, а бесполезный набор данных - а это не каждая "переливалка" сумеет. Опять же внешние связи, если их настраивать на этапе создания струкруры, в ряде случаев вынудят заливать данные из таблиц в строго определенной последовательности.

    Не, я не против, можно поиграть с "identity insert", можно слить данные в просто integer, а только потом поставить identity и primary-key, настроить forign-key. Можно, не спорю. Но в каждом конкретном случае это придется делать вручную.

    Не проще ли, зная структуру, написать свою конвертилку?

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

  • activist

    Сообщений: 109

    Пожалуй, Вы правы (я, как уже упоминал раньше, не специалист в этом вопросе). Но в сообщении ТС ничего не сказано о сложности преобразуемой базы данных. Может, упомянутые выше средства будут для него вполне адекватны.

  • veteran

    Сообщений: 1062

    В ответ на: Пожалуй, Вы правы (я, как уже упоминал раньше, не специалист в этом вопросе). Но в сообщении ТС ничего не сказано о сложности преобразуемой базы данных. Может, упомянутые выше средства будут для него вполне адекватны.
    Всем спасибо за советы. Я должен все это переработать. Из ваших сообщений я понял в какомнаправлении мне двигаться

    Лучше сделать и пожалеть об этом, чем пожалеть о том, что не сделал

  • guru

    Сообщений: 5269

    Есть еще такая шарованая штука как Paradox to MS SQL Server Conversion Software - 7.0
    Но я не пробовал, не знаю.

  • activist

    Сообщений: 109

    Уважаемый топикстартер! Пожалуйста, отпишитесь, как у Вас получилось. Мне самому стало интересно.

  • veteran

    Сообщений: 1062

    [
    В ответ на: Уважаемый топикстартер! Пожалуйста, отпишитесь, как у Вас получилось. Мне самому стало интересно.
    Пока никак. Расскажу о тех проблемах которые я не могу преодолеть. Может быть и опозорюсь, но... Первое. Я не могу понять как мне подключить одновременно базы Paradox и MS Sql. Вроде действую через настройка- источник данных (ODBC) но не понимаю как выбрать нужный драйвер и как разобраться с Логином и паролем. Поэтому не могу воспользоваться рекомендацией Садовникова с методом OPENDATASOURCE. Не понимаю, с каким классом в C# этот метод сидит. По этим причинам стою на месте. Если что подскажите- буду благодарен

    Лучше сделать и пожалеть об этом, чем пожалеть о том, что не сделал

  • v.i.p.

    Сообщений: 15262

    Это в скулевом запросе писать надо. Тоесть, подключиться к скулю и уже из него в запросе - к парадоксу.

  • veteran

    Сообщений: 1062

    В ответ на: Это в скулевом запросе писать надо. Тоесть, подключиться к скулю и уже из него в запросе - к парадоксу.
    Подключаться через объект SqlConnection к MS SQL я могу. Могу через объект SqlCommand выполнить запос SQL. Подскажите две вещи- первое- как правильно подключить базы Paradox и второе у какого объекта есть процедура OpenDataSource

    Лучше сделать и пожалеть об этом, чем пожалеть о том, что не сделал

  • v.i.p.

    Сообщений: 15262

    В ответ на: Могу через объект SqlCommand выполнить запос SQL.
    Вот как раз тут (в запросе) и надо писать OpenDataSource и т.д.

  • v.i.p.

    Сообщений: 15262

    Выполните вот такой запрос:

    SELECT *
    FROM
    OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', 'Data Source=ПутьКПапкеСбазойПарадокс;Extended Properties="Paradox 5.x"')...ИмяТаблицыПарадоксБезРасширения

  • veteran

    Сообщений: 1062

    Я предполагаю, что вы имели ввиду вложенный запрос с командай INSERT, когда вставляемые данные результат предложенного вами SELECT. Я еще поэкспериментирую с подключением Paradox через ODBC/

    Лучше сделать и пожалеть об этом, чем пожалеть о том, что не сделал

  • v.i.p.

    Сообщений: 15262

    Я имел ввиду именно SELECT:улыб:
    Дабы на простом примере показать, как работать с базами пардокса из скуля:улыб:
    Попробуйте и не мучайтесь со вторым подключением...

  • гундос

    Сообщений: 16232

    Снова задаюсь вопросом: откуда, какой средой делается соединение?
    MSVS? Delphi? VBA? В каждом случае будут свои рекомендации.
    Если просто 'не получается', экспериментируйте дальше

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

  • v.i.p.

    Сообщений: 15262

    А какая разница, если данные будут переливаться скулевыми запросами?

  • гундос

    Сообщений: 16232

    Вот и я, наконец, решился свою прогу увести с парабоксовских таблиц на что-то более приличное. Заставлять пользователей громоздить себе сикул, пусть даже msde, бесполезно, не сумеют, поэтому остановился на mdb-шнике. Access сам по себе не серьезный инструмент, но как хранилище вполне канает, тем более, что уж 2000-й формат та же ХР понимает по умолчанию.

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

    Конвертилку сделал. Принцип работы с данными практически тот же, что и MSSQL. Занятие, скажу, после insert получать идентификатор, и подменять на него идентификатор в связанной таблице, не такое уж очевидное. Особенно, учитывая, что у меня одна таблица ссылалась сама на себя для построения древовидной структуры, приходилось, изменяя одну таблицу шариться, выискивая нужную запись аж в 2 запросах:улыб:

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

  • veteran

    Сообщений: 1062

    Решил я свою проблему миграции данных с помощью старых добрых утилит Delphi 7. Сделал так. Вначале в BDE всем полям LangDriver там где присутствует слово Paradox, MSSQL, Accsses, Odbc присвоил pdox Ansi Cirillic (обеспечить поддержку русского текста). Затем создал объект ODBC для пустой базы Accsses и MS SQL. В ODBC логин и пароль sysdba и masterkey. Зарегестрировал алиасами в BDE. А дальше Datapump. Причем я сначала перенес из paradox в accsses, а затем из accsses в MS SQL. Трудоемкость минимальна, накаких SQL запросов.

    Лучше сделать и пожалеть об этом, чем пожалеть о том, что не сделал

  • v.i.p.

    Сообщений: 15262

    Фигасе:улыб:
    Мне проще скулевыми запросами перетащить.
    В любом случае - поздравляю!

  • guru

    Сообщений: 4281

    ОМГ.

    Non solum oportet, sed etiam necessese est

  • veteran

    Сообщений: 1978

    В ответ на: Cirillic
    Может Cyrillic?
    Я фуею
    Почему у меня так сложно никогда не получается придумать?

  • veteran

    Сообщений: 1062

    В ответ на: Почему у меня так сложно никогда не получается придумать?
    вы считаете сложно Дайте мне папку с 20 таблицами Paradox и я за 15 минут их перекачаю в MS SQL. Интересно, как вы проще предлагаете? Я вообще это сделал без написания кода..

    Лучше сделать и пожалеть об этом, чем пожалеть о том, что не сделал

  • гундос

    Сообщений: 16232

    Вот только вопрос. Если программа для себя, сделать перекачку надо один единственный раз, то тут все средства хороши.
    А если клиентов 1.5 по всей России и ближнему окружению, как им перекачивать?

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

  • veteran

    Сообщений: 1062

    В ответ на: Вот только вопрос. Если программа для себя, сделать перекачку надо один единственный раз, то тут все средства хороши.
    А если клиентов 1.5 по всей России и ближнему окружению, как им перекачивать?
    Программа для себя. Перекачку нало слелать разовую

    Лучше сделать и пожалеть об этом, чем пожалеть о том, что не сделал

  • гундос

    Сообщений: 16232

    Что-то я нифига не понимаю уже:хммм:
    Решил вот конвертилку отучить об BDE.
    Только ADOConnection и ADOQuery. С пустыми (!) параметрами.
    В ADOConnection прописываю ConnectionString 'Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Paradox 5.x;Data Source='+DBLocation;'
    Соединяется! Хотя и добавляет в ConnectionString еще кучу всякой гадости.

    Далее интереснее ADOQuery.SQL.ADD('select * from zakaz')...
    Если BDE установлен, все работает!
    Если нет... В реестре, создается ветка HKLM\SOFTWARE\Borland\Database Engine\Settings\DRIVERS\PARADOX\INIT с прописанной кодовой страницей. Зачем????
    Но нифига не работает! "Внешняя таблица не имеет предполагаемый формат"

    Более интересен иной факт. Если BDE установлен, то Excel прекрасно открывает DB-шки. Если нет - фиг вам...
    Нахрена Jet-у сдался BDE??????????????????????????

    зы CodeGear RAD Studio 2007...

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

    Исправлено пользователем Picaro (05.11.09 14:46)

  • гундос

    Сообщений: 16232

    От, Микрософты, падлюки... :зло:
    Статья говорит, что начиная с Jet 3.51 BDE не требуется, но тут же другая статья восстанавливает справедливость: "If you install the latest Jet 4.0 service pack and continue not to be able to use Paradox data..., install the BDE"

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

  • v.i.p.

    Сообщений: 15262

    Ну да... Никуда от BDE не деться...

Записей на странице:

Перейти в форум

Модератор: