У меня есть таблица с примерно 2,7 миллионами записей, 63 полями и несколькими индексами. Мне нужно быстро получить эту таблицу из mysql в postgresql (скажем, в течение часа). Я знаю, что mysql может быстро экспортировать данные, но postgresql кажется очень медленным при импорте данных. Любые идеи? Я импортирую CSV, созданный из mysqldump, около 3 часов.
Самый быстрый способ, который я могу придумать, - это отбросить все индексы и триггеры (или, по крайней мере, ALTER TABLE foo DISABLE TRIGGER ALL;
) в таблице в postgresql добавьте \.
конец строки ввода до конца вашего CSV-файла, затем поместите файл на сервер (желательно на диск, отличный от того, который используется для БД, или, может быть, где-нибудь в сети, к которому сервер может получить доступ через NFS) и COPY foo FROM '/some/file.csv' WITH CSV;
(Синтаксис 8.x, который поддерживается в 9.0. В зависимости от формата файла CSV вам может потребоваться вносить изменения.) После этого воссоздайте индексы и повторно включите триггеры.
Некоторые параметры конфигурации postgres могут повлиять на время загрузки данных. Отключение автоочистки и увеличение времени между контрольными точками может помочь с огромными нагрузками, но вам нужно перезапустить postgresql, чтобы изменить checkpoint_segments
или autovacuum
настройки, и вы захотите снова включить автоочистку, когда закончите.
mysqldump --compatible=postgresql -h... -u... -p... dbname tablename > PostgresqlData.sql
Такой вариант существует
--compatible=name Change the dump to be compatible with a given mode. By default tables are dumped in a format optimized for
MySQL. Legal modes are: ansi, mysql323, mysql40,
postgresql, oracle, mssql, db2, maxdb, no_key_options,
no_table_options, no_field_options. One can use several
modes separated by commas. Note: Requires MySQL server
version 4.1.0 or higher. This option is ignored with
earlier server versions.
Попробуйте !!!
Есть любое количество профессиональных ETL инструменты, которые могут перемещаться между базами данных с довольно высокой скоростью - например, я использовал открытый исходный код Pentaho PDI (в девичестве Чайник) попадание в диапазоне 100 тыс. строк в секунду. Это также дает несколько других преимуществ, таких как возможность объединять данные в несколько новых структур, графический интерфейс для процесса сопоставления и так далее.