Миграция lданных из локальной базы в MS SQL
7690
29
Есть программа по БД, написанная в локальной базе Paradox. Хочу переписать программу на основе серверных технологий. Для начала хотелось бы перенести базу вместе с данными из Paradox в MS SQL.. Должны быть какие то утилиты. Кто знаком- подскажите направление поиска, пожалуйста.
Сам не пробовал, но может, есть смысл посмотреть Microsoft SQL Server Management Studio? По крайней мере, там в командах для базы данных есть импорт данных, и при выборе источника данных можно указать .NET framework provider for Odbc, а уж базу Парадокса подключить к Odbc можно.
Спасибо. Посмотрю. Если получится сообщу через форум.
Да, и еще. Есть родная борландовская утилитка DataPump. По крайней мере, у меня в меню Delphi 7 она имеется. В справке написано, что она переносит как структуру, так и содержимое из исходной базы в конечную. Причем SQL Server как возможный вариант там упоминается. Более того, в справке имеется одно замечание, касающееся именно перекачки в Microsoft SQL Server.
Sadovnikov
v.i.p.
Из скуля подключиться к парадоксовским таблицам:
OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','Data Source="+ПутьКБазе+";Jet OLEDB:Database Password=""jIGGAe"";Extended Properties=""Paradox 5.x""')...ИмяТаблицы
и перелить данные в скулевые таблицы.
OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','Data Source="+ПутьКБазе+";Jet OLEDB:Database Password=""jIGGAe"";Extended Properties=""Paradox 5.x""')...ИмяТаблицы
и перелить данные в скулевые таблицы.
Ну чем залить данные то не такая проблема. Проблема сделать это корректно. Поясню, если в таблицах есть identity-поля, то нужно "перелить" так, чтобы коды сохранились, иначе будет не база, а бесполезный набор данных - а это не каждая "переливалка" сумеет. Опять же внешние связи, если их настраивать на этапе создания струкруры, в ряде случаев вынудят заливать данные из таблиц в строго определенной последовательности.
Не, я не против, можно поиграть с "identity insert", можно слить данные в просто integer, а только потом поставить identity и primary-key, настроить forign-key. Можно, не спорю. Но в каждом конкретном случае это придется делать вручную.
Не проще ли, зная структуру, написать свою конвертилку?
Не, я не против, можно поиграть с "identity insert", можно слить данные в просто integer, а только потом поставить identity и primary-key, настроить forign-key. Можно, не спорю. Но в каждом конкретном случае это придется делать вручную.
Не проще ли, зная структуру, написать свою конвертилку?
Пожалуй, Вы правы (я, как уже упоминал раньше, не специалист в этом вопросе). Но в сообщении ТС ничего не сказано о сложности преобразуемой базы данных. Может, упомянутые выше средства будут для него вполне адекватны.
Сейчас читают
А, знаете, как будет происходить Переход?
97784
349
Фатимские события
4948
36
Как подобреть
13942
107
Пожалуй, Вы правы (я, как уже упоминал раньше, не специалист в этом вопросе). Но в сообщении ТС ничего не сказано о сложности преобразуемой базы данных. Может, упомянутые выше средства будут для него вполне адекватны.Всем спасибо за советы. Я должен все это переработать. Из ваших сообщений я понял в какомнаправлении мне двигаться
Есть еще такая шарованая штука как Paradox to MS SQL Server Conversion Software - 7.0
Но я не пробовал, не знаю.
Но я не пробовал, не знаю.
Уважаемый топикстартер! Пожалуйста, отпишитесь, как у Вас получилось. Мне самому стало интересно.
[
Уважаемый топикстартер! Пожалуйста, отпишитесь, как у Вас получилось. Мне самому стало интересно.Пока никак. Расскажу о тех проблемах которые я не могу преодолеть. Может быть и опозорюсь, но... Первое. Я не могу понять как мне подключить одновременно базы Paradox и MS Sql. Вроде действую через настройка- источник данных (ODBC) но не понимаю как выбрать нужный драйвер и как разобраться с Логином и паролем. Поэтому не могу воспользоваться рекомендацией Садовникова с методом OPENDATASOURCE. Не понимаю, с каким классом в C# этот метод сидит. По этим причинам стою на месте. Если что подскажите- буду благодарен
Sadovnikov
v.i.p.
Это в скулевом запросе писать надо. Тоесть, подключиться к скулю и уже из него в запросе - к парадоксу.
fagit
veteran
Это в скулевом запросе писать надо. Тоесть, подключиться к скулю и уже из него в запросе - к парадоксу.Подключаться через объект SqlConnection к MS SQL я могу. Могу через объект SqlCommand выполнить запос SQL. Подскажите две вещи- первое- как правильно подключить базы Paradox и второе у какого объекта есть процедура OpenDataSource
Sadovnikov
v.i.p.
Могу через объект SqlCommand выполнить запос SQL.Вот как раз тут (в запросе) и надо писать OpenDataSource и т.д.
Sadovnikov
v.i.p.
Выполните вот такой запрос:
SELECT *
FROM
OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', 'Data Source=ПутьКПапкеСбазойПарадокс;Extended Properties="Paradox 5.x"')...ИмяТаблицыПарадоксБезРасширения
SELECT *
FROM
OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', 'Data Source=ПутьКПапкеСбазойПарадокс;Extended Properties="Paradox 5.x"')...ИмяТаблицыПарадоксБезРасширения
fagit
veteran
Я предполагаю, что вы имели ввиду вложенный запрос с командай INSERT, когда вставляемые данные результат предложенного вами SELECT. Я еще поэкспериментирую с подключением Paradox через ODBC/
Sadovnikov
v.i.p.
Я имел ввиду именно SELECT
Дабы на простом примере показать, как работать с базами пардокса из скуля
Попробуйте и не мучайтесь со вторым подключением...
Дабы на простом примере показать, как работать с базами пардокса из скуля
Попробуйте и не мучайтесь со вторым подключением...
Picaro
гундос
Снова задаюсь вопросом: откуда, какой средой делается соединение?
MSVS? Delphi? VBA? В каждом случае будут свои рекомендации.
Если просто 'не получается', экспериментируйте дальше
MSVS? Delphi? VBA? В каждом случае будут свои рекомендации.
Если просто 'не получается', экспериментируйте дальше
Sadovnikov
v.i.p.
А какая разница, если данные будут переливаться скулевыми запросами?
Picaro
гундос
Вот и я, наконец, решился свою прогу увести с парабоксовских таблиц на что-то более приличное. Заставлять пользователей громоздить себе сикул, пусть даже msde, бесполезно, не сумеют, поэтому остановился на mdb-шнике. Access сам по себе не серьезный инструмент, но как хранилище вполне канает, тем более, что уж 2000-й формат та же ХР понимает по умолчанию.
Задача еще стояла так, чтобы конечный пользователь, не мудрствуя, нажал кнопку и получил слепок старых данных в новых структурах.
Конвертилку сделал. Принцип работы с данными практически тот же, что и MSSQL. Занятие, скажу, после insert получать идентификатор, и подменять на него идентификатор в связанной таблице, не такое уж очевидное. Особенно, учитывая, что у меня одна таблица ссылалась сама на себя для построения древовидной структуры, приходилось, изменяя одну таблицу шариться, выискивая нужную запись аж в 2 запросах
Задача еще стояла так, чтобы конечный пользователь, не мудрствуя, нажал кнопку и получил слепок старых данных в новых структурах.
Конвертилку сделал. Принцип работы с данными практически тот же, что и MSSQL. Занятие, скажу, после insert получать идентификатор, и подменять на него идентификатор в связанной таблице, не такое уж очевидное. Особенно, учитывая, что у меня одна таблица ссылалась сама на себя для построения древовидной структуры, приходилось, изменяя одну таблицу шариться, выискивая нужную запись аж в 2 запросах
fagit
veteran
Решил я свою проблему миграции данных с помощью старых добрых утилит 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 запросов.
Sadovnikov
v.i.p.
Фигасе
Мне проще скулевыми запросами перетащить.
В любом случае - поздравляю!
Мне проще скулевыми запросами перетащить.
В любом случае - поздравляю!
CirillicМожет Cyrillic?
Я фуею
Почему у меня так сложно никогда не получается придумать?
Почему у меня так сложно никогда не получается придумать?вы считаете сложно Дайте мне папку с 20 таблицами Paradox и я за 15 минут их перекачаю в MS SQL. Интересно, как вы проще предлагаете? Я вообще это сделал без написания кода..
Вот только вопрос. Если программа для себя, сделать перекачку надо один единственный раз, то тут все средства хороши.
А если клиентов 1.5 по всей России и ближнему окружению, как им перекачивать?
А если клиентов 1.5 по всей России и ближнему окружению, как им перекачивать?
Вот только вопрос. Если программа для себя, сделать перекачку надо один единственный раз, то тут все средства хороши.Программа для себя. Перекачку нало слелать разовую
А если клиентов 1.5 по всей России и ближнему окружению, как им перекачивать?
Picaro
гундос
Что-то я нифига не понимаю уже
Решил вот конвертилку отучить об 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...
Решил вот конвертилку отучить об 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...
От, Микрософты, падлюки...
Статья говорит, что начиная с 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"
Статья говорит, что начиная с 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"
Sadovnikov
v.i.p.
Ну да... Никуда от BDE не деться...