Database migration from MySQL to PostgreSQL

231

MySQL and PostgreSQL are both very popular open-source relational database management systems with a robust set of administrative tools and programming APIs. PostgreSQL, on the other hand, provides a number of significant benefits over MySQL:

  • it complies completely with the ANSI SQL standard
  • supports a variety of indexing models
  • allows for asynchronous commit

Both synchronous and asynchronous replication are supported

That is why many enterprises and organizations are considering a MySQL to Postgres database migration.

Database migration, in general, consists of the following steps:

– Extract table definitions in the form of DDL SQL statements from the source MySQL database

– Convert these statements to the target database’s format and load them

– Export data from a MySQL database to a temporary storage location (for example, csv files)

– Convert the data to the desired format and import it into the Postgres database.

– Extraction of MySQL views, stored procedures, and triggers in the form of SQL statements and source code

– Convert these statements and their associated source code to the target format and load them into the PostgreSQL database.

– Verify that all database objects have been appropriately translated

Obviously, manually moving a database from MySQL to Postgres needs some work. Additionally, owing to the human aspect, there is a considerable danger of data loss or corruption. It would be prudent to automate the converting process using specialized software.

MySQL to PostgreSQL is one such conversion tool provided by Intelligent Converters. Since 2001, Intelligent Converters has been a software provider specialized in database conversion, migration, and synchronization solutions. Their MySQL to Postgres converter is exceptionally fast (approximately 10,000 records per second on an average current machine), owing to the fact that it reads and writes data directly, does not use any intermediate components. It supports all MySQL and PostgreSQL versions, as well as cloud solutions. The solution includes a command line interface for automating and scheduling database conversions. Not only does the MySQL to PostgreSQL converter enable for the migration of MySQL data into a new database, but also for the merging or synchronization of MySQL data with an existing PostgreSQL database.

Do you need just a subset of records to be migrated to the target database? That is not an issue; the tool supports data filtering using SELECT queries. This option enables you to pick certain columns and records for conversion or even change the data before it is converted to PostgreSQL format. Here are a few examples of how to use this functionality for various reasons.

1) Record filtering:

SELECT * FROM TheTable WHERE IdColumn< 300

2) Rename individual columns by selecting them and renaming them:

SELECT col1 AS LastName, col2 as CellPhoneFROM TheTable

3) Ignore NULL values:

SELECT * FROM TheTable WHERE Details IS NOT NULL

Occasionally, it may be required to alter the column type in the resultant database. MySQL to PostgreSQL converter supports this through a feature called “custom column mapping.” It is a dialog box that enables you to modify the name, type, default value, and NULL-attribute of any column in a table, as well as to exclude certain columns from conversion.

If the destination PostgreSQL server does not permit remote connections, the software offers the alternative of exporting the data to a SQL script. The source database is exported to a local file containing SQL commands for the purpose of creating tables with the necessary indexes and constraints and populating them with data. Then, using common PostgreSQL tools such as psql or phpPgAdmin, the database administrator may import the script file into the PostgreSQL server.