Перейти к содержанию

SELTA/CSVDump

Материал из Etersoft wiki


Перенос данных из MS SQL Server в PostgreSQL для 1С 7.7

Самый простой способ загрузки данных в базу — штатная выгрузка и загрузка самой 1С (Конфигуратор → Администрирование → Выгрузить/Загрузить данные). Это делается так же, как при работе с MS SQL Server или DBF (пошаговая инструкция).

Если база на MS SQL Server очень большая и её невозможно выгрузить в zip-архив, перенесите данные утилитой Конвертор. Перенос идёт в два этапа: создание структуры базы в PostgreSQL и перенос самих данных.

Создание структуры базы данных

Создайте на сервере пустую базу со схемой SELTA: selta-pg-setup create-db buh на сервере Linux или «Создать БД» в Центре управления.

Запустите 1С 7.7, создайте новую информационную базу и откройте её в Конфигураторе. В Администрирование → Параметры базы данных SQL укажите параметры подключения к PostgreSQL (подключение 1С) и созданную базу.

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

Перенос самих данных

Запустите Центр управления SELTA, в главном меню выберите Утилиты → Конвертор:

selta_convert.png

Нажмите «MS SQL Server → CSV», укажите параметры подключения к MS SQL Server с исходной базой и папку на клиенте, куда будут скопированы данные:

selta_convert_go_csv.png

Нажмите «Выполнить» и дождитесь окончания: копирование всех таблиц может занять продолжительное время.

Затем нажмите «CSV → PostgreSQL» и укажите параметры подключения к базе, в которой сохранена ваша конфигурация:

selta_convert_go_db.png

Нажмите «Выполнить» и дождитесь окончания (для больших баз — до нескольких часов). После этого база готова к работе: запускайте 1С.

Если в дампе таблиц больше, чем в базе (дамп делался с работающей базы 1С, а загружается в «чистую» конфигурацию), будет ошибка:

selta_convert_error_exist.png

Чтобы её избежать, установите флажок «Пропускать таблицы, отсутствующие в базе».

Современный PostgreSQL проверяет длину строк mvarchar(n) при загрузке: значение длиннее столбца даёт ошибку value too long for type mvarchar(n), а не сохраняется, как в старых сборках Postgre@Etersoft 9.2. Исправьте такие данные в исходной базе.

Если вы используете распределённую базу 1С

, порядок немного отличается — см. перенос распределённой базы.

Загрузка CSV-дампа в MS SQL Server выполняется аналогично (при выключенной SELTA).