MS SQL -> PostgreSQL

Задумался о таком переходе, т.к. с последним только начинаю знакомство, есть пара вопросов
1. Возможно ли (и как) конвертировать базу из MS в PostgreSQL?
2. Насколько велики различия pgSQL от T-SQL (т.е. насколько придется переделывать запросы в приложениях)?

заранее спасибо

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

1) Можно

1) Можно подключить PostgreSQL по ODBC к MS SQL, и перелить данные, все остальное (структура, ХП и т.д.) руками.
2) ANSI SQL конечно одинаковый, но сложно представить, что пользователи MS SQL не используют его расширенные возможности. У T-SQL и plpgSQL ничего общего, идеология тоже разная.
Так же не стоит забывать про способ доступа к БД: библиотеки, компоненты и т.д.
Большая вероятность, что придется переделывать все.

Ну всё-таки SQL

Ну всё-таки SQL он и в Африке SQL. Большая часть всё равно должна быть стандартной, если разработчики БД вообще что-то соображают в проектировании БД,а программисты в написании программ для SQL-серверов.

Безусловно, будут и нестандартные части, которые придётся затачивать руками - но тут уж деваться некуда!
Могу сказать что PostgreSQL в этом плане всё-таки более предпочтителен, потому что гораздо полнее реализовывает и соответствует стандартам SQL.

-----------------------------------------------------------------------------------
"ls /" (C) Козьма Прутков

Ситуация в

Ситуация в следующем: имеем базу 1С 7.7, конфигурация во многом переписана на прямых SQL запросах (посредством 1С++). (насколько разработчики и программеры 1С разбираются в том, что они делают - это отдельная песня)
Всвязи с этим пытаюсь оценить затраты на переписку.
Еще интересует, нормально ли (по скорости) Postgres будет работать с большими (>15Гб) базами?

Здесь вам вряд

Здесь вам вряд ли кто поможет оценить затраты на переписку.
Мне кажется лучше вам с этим обратится в 1C.
Послько последние версии 1C работают с PostgreSQL без всяких переписываний, то возможно есть смысл задуматься об обновлении версии 1C?

Что касается скорость - PostgreSQL не только совместимый, но и быстрый продукт и базы в 15G никакого труда для PostgreSQL не представляют.
-----------------------------------------------------------------------------------
"ls /" (C) Козьма Прутков

Последние

Последние версии - это 8.1. Чтобы перейти на нее, нужно будет конкретно переписывать/доделывать конфигурацию. Плюс "восьмерка" все-тки "потяжелее" и для работы с ней в терминале >70 юзеров скорей всего потребует апгрейда железа. Так что вопрос перехода на нее пока отложен (как минимум до конца года).
Что касается оценки затрат, то я имел ввиду не деньги, а время на переписку запросов T-SQL. Обычная 1С (без T-SQL запросов) должна нормально работать через транслятор SELTA@Etersoft (http://etersoft.ru/selta)

Тогда просто

Тогда просто возьмите тестовый сервер и 2-3 закавыристых запроса и попробуйте на тестовом сервере перенести.
Не думаю, что у кого-то здесь есть опыт перенесения именно 7-ки именно под PostgreSQL.

PostgreSQL полностью соответствует стандарту SQL92 и почти полностью SQL2003, но проблемы-то как раз у вас могут возникнуть при адаптации самопала MS SQL к стандарту.
-----------------------------------------------------------------------------------
"ls /" (C) Козьма Прутков

А можно

А можно поподробнее по первому пункту?

КАК КОНВЕРТНУТЬ ДАННЫЕ MS->PG?

Можно поподробнее, как перееконвертировать руками?
Может быть, есть какая -нибудь инструкция?
Программы типа DBConvert - платные, поэтому не подошли :(
Есть старая инструкция на сайте postgresql.org через ODBC, но из нее неясно, как перегнать 700 таблиц (там пример только для одной).
Прошу откликнуться.

Выгружайте

Выгружайте дамп в текстовом виде причём в диалекте SQL92, а потом пытайтесь всосать этот дамп в PostgreSQL.
Что-то всосётся, что-то придётся ручками допиливать, где-то так.

можно

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

Другой вариант - взять какое-нибудь CASE-средство, всосать в него структуру MSSQL-базы, а потом из структуры сгенерить базу в постгресе.

Ну и напоследок - купить-таки (или найти лекарство на) платный конвертер, например http://www.sqlmanager.net/ru/products/postgresql/datapump

Я попробовал скачать эту прогу

Я попробовал скачать эту прогу, но так как объем базы 48 Гб (от 1С 8-ки) то делаться это будет долго.
Перед импортом программа вывела окошко настроек - опция SQL92 не включена. Включать ее?
Имена As is, LowerCase, или Upper? И потом она перегоняет таблицы в формате имени dbo.AccountTable1 и т .п.
Насколько мне известно в postgreSQL наоборот не должно быть этих "dbo." перед именем таблицы... и будет ли потом работать 1С? В общем чешу голову.

А вы не

А вы не пробовали обратится в 1C?
Мне кажется, что как минимум должен существовать конвертер именно для 1C. Это первое. А второе - это нельзя ли выполнить бакап 1C средствами самого 1C и затем восстановить не в MS SQL, а в PostgreSQL?

Что касается dbo. то в PostgreSQL понятие схем уже работает давненько, т.е. если вы создадите схему dbo, то таблица в ней будет иметь полное имя dbo.AccountTable1.

покой нам только снится?

Не могу представить себе причин для такого перехода с уже наработанной базы в 48Г(!) на совершенно другую базу, да еще и под 1С, работу которой с БД навряд ли можно назвать идеальной, причем версии, не поддерживаемой postgresql !
P.S. Интересно было бы посмотреть на работу 1С с базой указанного объема с 70 пользователями !!!

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023