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

SELTA/SELTAEXECONVERT

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


Конвертор

Утилита переносит данные из MS SQL Server в PostgreSQL и обратно. Переносятся только данные: структуру базы (таблицы, индексы, хранимые процедуры) создают отдельно — для 1С 7.7 Конфигуратором, см. Перенос данных из MS SQL Server в PostgreSQL для 1С 7.7.

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

Главное окно утилиты:

selta_convert.png

  • «PostgreSQL → CSV» — выгрузка данных из PostgreSQL в CSV-дамп;
  • «MS SQL Server → CSV» — выгрузка данных из MS SQL Server в CSV-дамп;
  • «CSV → PostgreSQL» — загрузка CSV-дампа в PostgreSQL;
  • «CSV → MS SQL Server» — загрузка CSV-дампа в MS SQL Server (при выключенной SELTA).

Формат CSV-дампа:

  • каждая таблица — в отдельном текстовом файле с именем таблицы;
  • файл _list_tables.inf содержит список всех таблиц;
  • все значения заключены в кавычки, кавычки внутри значений удваиваются;
  • столбцы разделяются точкой с запятой ;, строки — переводом строки;
  • кодировка — кодировка Windows (ANSI; для русской Windows — CP1251).

Окно выгрузки из базы в CSV-дамп:

selta_convert_go_csv.png

Укажите параметры подключения к базе и путь, куда сохранить дамп: там будет создан каталог с именем базы, в него лягут файлы дампа. «Выполнить» начинает копирование; для очень больших баз оно занимает до нескольких часов. В окне состояния видно, какая таблица копируется и сколько уже скопировано.

Окно загрузки CSV-дампа в базу:

selta_convert_go_db.png

Укажите параметры подключения к базе и путь к файлу _list_tables.inf дампа. Загрузка занимает больше времени, чем выгрузка.

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

selta_convert_error_exist.png

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

При загрузке в PostgreSQL проверяется длина строк mvarchar(n): значение длиннее столбца даёт ошибку value too long for type mvarchar(n).

То же из командной строки — SeltaCmd.exe.