pgloader icon indicating copy to clipboard operation
pgloader copied to clipboard

Import mysql dump file to postgres

Open oferdinho opened this issue 5 years ago • 6 comments

Hey!

I am trying to import a mysql dump file (that was dumped with --compatible=postgresql) using pgloader into a running postgres db. I saw in the documentation an example for doing so with sqlite, is it not supported for mysql as well? I tried doing so with compiling from sources and also with the pgloader docker container. I am trying to avoid importing the mysql dump file to a mysql db and then run a pgloader migration.

Many thanks in advanced.

  • [ ] pgloader --version sources: pgloader version "3.6.48d8ed0" compiled with SBCL 1.4.5.debian docker: pgloader version "3.6.3~devel" compiled with SBCL 1.4.16.debian

This is the load.conf:

LOAD DATABASE FROM mysql://./dump/mysqldump INTO postgresql://postgres:[email protected]:5432/my_db

oferdinho avatar Nov 10 '20 15:11 oferdinho

is this working?

cristianburca avatar Apr 21 '22 09:04 cristianburca

@cristianburca no

denizzzka avatar Apr 29 '22 19:04 denizzzka

lol, wasted two hours of my life before finding this

am0z avatar May 05 '22 09:05 am0z

it would really be great to have this, currently struggling with this as I'm trying to migrate a database which is in a container that is not accessible from anywhere outside the docker network

thexperiments avatar May 07 '23 13:05 thexperiments

it would really be great to have this, currently struggling with this as I'm trying to migrate a database which is in a container that is not accessible from anywhere outside the docker network

Same here.

BrianJM avatar May 17 '23 14:05 BrianJM

This will be of help

`#!/bin/bash

Define input and output files

MYSQL_DUMP_FILE="kwaugsms.sql" POSTGRES_DUMP_FILE="postgres_dump.sql"

Convert MySQL SQL dump to PostgreSQL equivalent

sed -e 's/`/"/g'
-e 's/IF NOT EXISTS//g'
-e 's/AUTO_INCREMENT//g'
-e 's/UNSIGNED//g'
-e 's/ENGINE=InnoDB//g'
-e 's/DEFAULT CHARSET=utf8//g'
-e 's/CHARACTER SET utf8 COLLATE utf8_unicode_ci//g'
-e 's/utf8_unicode_ci/citext/g'
-e 's/ON UPDATE CURRENT_TIMESTAMP//g'
-e 's/TIMESTAMP/datetime/g'
-e 's/mediumint/int/g'
-e 's/mediumtext/text/g'
-e 's/timestamp(6)/timestamp/g'
-e 's/UNIQUE KEY/UNIQUE/g'
-e 's/SET character_set_client=utf8//g'
-e 's/SET collation_connection=utf8_unicode_ci//g'
-e 's/SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"//g'
-e 's/ENGINE=MyISAM//g'
-e 's/ROW_FORMAT=DYNAMIC//g'
-e 's/ROW_FORMAT=COMPRESSED//g'
-e 's/COMMENT=[^;]//g'
-e 's/ENUM([^)]
)/text/g'
-e 's/BINARY/varbinary/g'
-e 's/ZEROFILL//g'
-e 's/UNSIGNED//g'
-e 's/USING btree//g'
-e 's/USING BTREE//g'
-e 's/USING HASH//g'
-e 's/USING RTREE//g'
-e 's/USING RTREE//g'
-e 's/USING HASH//g'
-e 's/USING RTREE//g'
-e 's/USING HASH//g'
-e 's/USING RTREE//g'
-e 's/USING HASH//g'
-e 's/USING RTREE//g'
-e 's/USING HASH//g'
-e 's/USING RTREE//g'
-e 's/USING HASH//g'
-e 's/USING RTREE//g'
-e 's/USING HASH//g'
-e 's/USING RTREE//g'
-e 's/USING HASH//g'
-e 's/USING RTREE//g'
-e 's/USING HASH//g'
-e 's/USING RTREE//g'
-e 's/USING HASH//g'
-e 's/USING RTREE//g'
-e 's/USING HASH//g'
-e 's/USING RTREE//g'
-e 's/USING HASH//g'
-e 's/USING RTREE//g'
-e 's/USING HASH//g'
-e 's/USING RTREE//g'
-e 's/USING HASH//g'
-e 's/USING RTREE//g'
-e 's/USING HASH//g'
-e 's/USING RTREE//g'
-e 's/USING HASH//g'
-e 's/USING RTREE//g'
-e 's/USING HASH//g'
-e 's/USING RTREE//g'
-e 's/USING HASH//g'
-e 's/USING RTREE//g'
-e 's/USING HASH//g'
-e 's/USING RTREE//g'
-e 's/USING HASH//g'
-e 's/USING RTREE//g'
-e 's/USING HASH//g'
-e 's/USING RTREE//g'
-e 's/USING HASH//g'
-e 's/USING RTREE//g'
-e 's/USING HASH//g'
-e 's/USING RTREE//g'
-e 's/USING HASH//g'
-e 's/USING RTREE//g'
-e 's/USING HASH//g'
-e 's/USING RTREE//g'
-e 's/USING HASH//g'
-e 's/USING RTREE//g'
-e 's/USING HASH//g'
-e 's/USING RTREE//g'
-e 's/INT(([0-9]))/integer/g'
-e 's/DROP INDEX/COMMENT ON INDEX/g'
-e 's/,\s
CONSTRAINT \S+ FOREIGN KEY ([^()]) REFERENCES ([^ ]) ([^,])//g'
-e 's/,\s
CONSTRAINT \S+ FOREIGN KEY ([^()]) REFERENCES ([^ ]) ([^,])//g'
-e 's/CONSTRAINT \S+ FOREIGN KEY ([^()]
) REFERENCES ([^ ]) ([^,])//g'
-e 's/CONSTRAINT \S+ FOREIGN KEY ([^()]) REFERENCES ([^ ]) ([^,])//g'
-e 's/unsigned//g'
-e 's/PRIMARY KEY ([^)]
)/PRIMARY KEY/g'
-e 's/,\sPRIMARY KEY ([^)])//g'
-e 's/CREATE TABLE/CREATE TABLE IF NOT EXISTS/g'
-e 's/,\sUNIQUE KEY [^,]//g'
-e 's/,\sKEY [^,](?:([^)]))?//g'
-e 's/,CONSTRAINT [^,]
(?: FOREIGN KEY ([^)]))?//g'
-e 's/,CHECK (([^)]
))//g'
-e 's/ AUTO_INCREMENT=[0-9]//g'
-e 's/UNSIGNED//g'
-e 's/REFERENCES ([^ ]
)/REFERENCES "\1"/g'
-e 's/INT([0-9])/INT/g'
-e 's/TEXT([0-9]
)/TEXT/g'
-e 's/DATETIME/ TIMESTAMP/g'
-e 's/bool /boolean /g'
-e 's/DEFAULT NULL//g'
-e 's/DEFAULT CURRENT_TIMESTAMP//g'
-e 's/ ON UPDATE CURRENT_TIMESTAMP//g'
-e 's/datetime/timestamp/g'
-e 's/ENGINE=MEMORY//g'
-e 's/SET storage_engine=MEMORY//g'
-e 's/ALTER TABLE/COMMENT ON TABLE/g'
-e 's/latin1/utf8/g'
-e 's/ mediumtext/ text/g'
-e 's/ tinyint([0-9])/ smallint/g'
-e 's/ mediumint([0-9]
)/ integer/g'
-e 's/ int([0-9])/ integer/g'
-e 's/ unsigned//g'
-e 's/ auto_increment//g'
-e 's/character set latin1/character set utf8/g'
-e 's/enum(/text check (check_column in (/g'
-e 's/enum(/text check (check_column in (/g'
-e 's/enum(/text check (check_column in (/g'
-e 's/enum(/text check (check_column in (/g'
-e 's/enum(/text check (check_column in (/g'
-e 's/enum(/text check (check_column in (/g'
-e 's/enum(/text check (check_column in (/g'
-e 's/enum(/text check (check_column in (/g'
-e 's/enum(/text check (check_column in (/g'
-e 's/enum(/text check (check_column in (/g'
-e 's/enum(/text check (check_column in (/g'
-e '/^SET/d'
-e '/^DROP/d'
-e '/^LOCK/d'
-e '/^UNLOCK/d'
-e '/^INSERT/d'
-e '/^/*/d'
-e '/^--/d'
-e '/^/*!/,/^SET/d'
-e '/^/*[^!]/d'
-e '/^\s
$/d'
"$MYSQL_DUMP_FILE" > "$POSTGRES_DUMP_FILE"

echo "MySQL SQL dump converted to PostgreSQL equivalent successfully." `

fredrickwampamba avatar Feb 26 '24 16:02 fredrickwampamba