Миграция lданных из локальной базы в MS SQL
7695
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. Можно, не спорю. Но в каждом конкретном случае это придется делать вручную.
Не проще ли, зная структуру, написать свою конвертилку?
Пожалуй, Вы правы (я, как уже упоминал раньше, не специалист в этом вопросе). Но в сообщении ТС ничего не сказано о сложности преобразуемой базы данных. Может, упомянутые выше средства будут для него вполне адекватны.
Сейчас читают
красота и материнство (часть 27)
161138
1000
Одинокий Сирожа мечтает познакомиться...
5837
77
Ситуация,,,
3653
58
Пожалуй, Вы правы (я, как уже упоминал раньше, не специалист в этом вопросе). Но в сообщении ТС ничего не сказано о сложности преобразуемой базы данных. Может, упомянутые выше средства будут для него вполне адекватны.Всем спасибо за советы. Я должен все это переработать. Из ваших сообщений я понял в какомнаправлении мне двигаться
Есть еще такая шарованая штука как 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 не деться...