从其他数据库迁移到 PostgreSQL

来自 PostgreSQL 维基
跳转到导航跳转到搜索

术语

通用

  • Ispirer 工具包 自动执行任何流行的 RDBMS 到 PostgreSQL 的迁移。可获得 Ispirer 工具包的免费演示版。
  • SQLWays 工具包 是一款易于使用的数据库迁移工具,用于在最流行的数据库之间迁移整个数据库架构、SQL 对象、表和数据。该工具可作为免费的在线转换器使用,并提供免费的演示版许可证。
  • Convertum.ru 是一款功能强大的工具,用于自动迁移 25 多种数据库,包括迁移到 PostgreSQL。提供 30 天的免费试用版。
  • DBConvert Streams 是一款多功能软件,支持多种数据库的转换,包括 PostgreSQL,并支持实时变更数据捕获 (CDC) 数据复制。它提供跨分布式平台的云数据集成和流式传输功能。
  • Omni Loader 是一款大规模并行和横向可扩展的企业级数据库迁移解决方案。可以轻松地将每秒数百万条记录加载到 PostgreSQL 中。
  • AbstraLinx 是一款用于 Salesforce 的元数据管理 GUI 工具,可以将 Salesforce 架构转换为 PostgreSQL 和其他数据库,例如 MySQL、Oracle、SQL Server、Firebird、SQLite 等。
  • Full Convert 是一款可靠且易于使用的数据库迁移和同步解决方案,可以从 40 多种数据库引擎转换为 PostgreSQL,反之亦然。
  • pgloader 知道如何从 MySQL、SQLite、MS SQL Server、dBase 文件、CSV 文件和定长数据文件以及更多文件加载数据。在 PostgreSQL 许可证下发布。
  • DBConvert PostgreSQL 数据库迁移和同步软件 PostgreSQL/Amazon RDS、MySQL、MS SQL Server、SQL Azure、Oracle、MS Access 之间的数据库转换和同步。PostgreSQL 支持到 13 版,因此不是完全最新的。
  • dbForge Studio for PostgreSQL 是一款功能丰富的数据库开发和管理 IDE,其功能包括数据库架构和表数据的比较和同步,以及从/到各种关系数据库(如 Oracle、MySQL、Microsoft SQL Server 和 MariaDB)迁移数据。
  • dbForge Data Compare for PostgreSQL 是一款帮助在 PostgreSQL 数据库中定位和查看表数据差异、创建详细比较报告以及同步源数据库和目标数据库内容的工具。
  • dbForge Schema Compare for PostgreSQL/Redshift 是一款免费解决方案,有助于查找和分析数据库架构中的差异,生成全面的比较报告,以及同步源数据库和目标数据库中的架构更改。
  • ERBuilder 是一款 Windows GUI 工具,有助于从各种 DBMS 架构转换为 PostgreSQL。支持的数据库:MySQL、Oracle、SQL Server、Firebird、SQLite、Amazon Redshift、Amazon RDS、Microsoft Azure SQL 数据库。
  • ESF Database Migration Toolkit 使您能够在各种数据库之间传输数据,支持 PostgreSQL、MySQL、Oracle、SQL Server、IBM DB2、Informix、Microsoft Access、Microsoft Excel、dBase、Foxpro、Firbird、SQLite 等 - 作者:Martin Williams
  • 不同 SQL 实现的比较 作者:Troels Arvin(涵盖 PG 8.4 和 MySQL 5.0,因此有点过时)
  • PostgreSQL 中的事务性 DDL:竞争分析 作者:Greg Smith
  • dataPro PostgreSQL、SQLite、MySQL、Oracle、SQL Server 和 Microsoft Access 的转换和数据库对象传输工具。转换表架构并将数据从一种数据库类型迁移到另一种数据库类型。涵盖 PG7 到 PG9,因此相当过时。
  • DataDiff CrossDB 是一款 Windows GUI 实用程序,用于比较和同步/传输 PostgreSQL 到/从 Oracle、MSSQL、MS Access 或 MySQL 数据库的数据。
  • PostgreSQL Data Wizard 是一款 Windows GUI 实用程序,用于将任何 ADO 兼容的源(如 MS Access、MySQL、SQL Server、Oracle 等)的架构和数据传输到 PostgreSQL。
  • SQL::Translator 是一款 Perl 模块,用于在不同软件之间转换表定义。
  • 外部数据包装器 可能有助于从其他数据库导出数据。
  • Postgres Migration Toolkit 软件包,用于将 Oracle、MySQL、SQL Server 和 FoxPro 转换为 PostgreSQL,反之亦然。
  • sqlacrossover 基于 SQLAlchemy 的跨数据库迁移工具。
  • Skyvia 用于 PostgreSQL 与 Salesforce、Dynamics CRM、SugarCRM、Zoho CRM、QuickBooks、FreshBooks、ExactTarget、MailChimp、Bigcommerce、MySQL、SQL Server、SQL Azure、Amazon RDS 的云数据集成的 Web 服务。
  • OmniDB 是一款开源的、功能全面的数据库管理 Web 工具。目前仅支持 PostgreSQL。更多 RDBMS 支持即将到来,包括将数据库从任何支持的 RDBMS 转换为 PostgreSQL,反之亦然的能力。
  • Exportizer Enterprise 用于 PostgreSQL、Oracle、SQL Server、SQLite、Interbase、Firebird、MySQL、DB2、Informix、SQL Anywhere、Microsoft Access、Microsoft Excel、dBase、CSV 的通用数据转换工具。可以从 GUI 或命令行导出数据。
  • jOOQ SQL Translator 用于在 25 种以上 RDBMS 方言之间进行 SQL 语法转换的 Web 服务。

Apache Derby

  • derby2pg 转换程序,可以将给定架构中的表、数据和索引转换为可用于填充 PostgreSQL 数据库的脚本。

DBase II, III, IV+ / DBF 格式

FileMaker Pro

IBM DB2

  • Ispirer 工具包 自动迁移整个数据库架构(表、视图、存储过程、函数、触发器等)并将数据从 DB2 LUW、DB2 AS/400(iSeries)和 DB2 OS/390(z/OS)迁移到 PostgreSQL。可获得 Ispirer 工具包的免费演示版。
  • Convertum.ru 是一款功能强大的工具,用于自动迁移 25 多种数据库,包括从 DB2 LUW、DB2 iSeries 和 DB2 z/OS 迁移到 PostgreSQL。提供 30 天的免费试用版。
  • Omni Loader 是一款大规模并行和横向可扩展的企业级数据库迁移解决方案。可以轻松地将数百万条记录从 DB2 LUW、iSeries、z/OS 加载到本地或云上的 PostgreSQL 中。
  • 从 DB2 迁移到 PostgreSQL
  • Full Convert 是一款可靠且易于使用的数据库迁移和同步解决方案,可以从 40 多种数据库引擎转换为 PostgreSQL,反之亦然(包括 DB2 LUW、DB2 iSeries 和 DB2 z/OS)。
  • db2topg 迁移工具,用于将 DB2 UDB 数据库转换为 PostgreSQL 数据库。
  • Exportizer Enterprise 将 DB2 中的数据转换为 PostgreSQL,反之亦然。
  • ESF Database Migration Toolkit 如何以简单的方式将 DB2 迁移到 PostgreSQL。

InterBase

  • Ispirer 工具包 自动迁移整个数据库架构(表、视图、存储过程、函数、触发器等)并将数据从 InterBase 和 Firebird 迁移到 PostgreSQL。可获得 Ispirer 工具包的免费演示版。
  • Convertum.ru 是一款功能强大的工具,可自动迁移 25 种以上数据库,包括从 Interbase 到 PostgreSQL 的迁移。30 天试用期免费。
  • DBConvert 迁移软件 可将数据从 Interbase/Firebird 导出到 PostgreSQL。DBSync 工具可以实现 Interbase 和 Postgres 之间的同步。
  • DBReplicate - 简化 Interbase->PostgreSQL 转换 由 Kirk Strauser 开发
  • Full Convert 是一款可靠且易于使用的数据库迁移和同步解决方案,可以将超过 40 种数据库引擎转换为 PostgreSQL 以及反向转换(包括 Interbase)。
  • Exportizer Enterprise 可将数据从 Interbase 转换为 PostgreSQL 以及反向转换。
  • ESF 数据库迁移工具包 如何以简单的方式将 Interbase/FireBird 迁移到 PostgreSQL。

Microsoft Access

  • ESF 数据库迁移工具包 如何以简单的方式将 MS Access 迁移到 PostgreSQL。
  • 跨数据库转换和同步软件 将数据从 Microsoft Access 迁移到 PostgreSQL 并保持同步。
  • 使用 ogr_fdw 连接到 MS Access 表格 如果您的 PostgreSQL 运行在 Windows 上,您可以使用 ogr_fdw 外部数据包装器,它与 PostGIS 2.2+ for Windows 的捆绑包一起提供,可以通过应用程序堆栈构建器获得。使用 PostgresQL 9.5,您可以使用 IMPORT FOREIGN SCHEMA 连接所有 MS Access 表格,然后选择您想要重构的方式。
  • exportSQL - 一个 Microsoft Access 模块,由 Dobrica Pavlinusic 开发,可以将 Access 数据库导出到 MySQL、mSQL 和 PostgreSQL。基于 Pedro Freire 的作品。
  • Full Convert 是一款可靠且易于使用的数据库迁移和同步解决方案,可以将超过 40 种数据库引擎转换为 PostgreSQL 以及反向转换(包括 Access)。
  • Exportizer Enterprise 可将数据从 MS Access 转换为 PostgreSQL 以及反向转换。
  • MDB Tools 由 Brian Bruns 开发
    • 将所有表格快速地导出为 tsv 或 csv 文件
for TT in $(mdb-tables file.mdb); do
     mdb-export -Q -d '\t' -D '%Y-%m-%d %H:%M:%S' file.mdb "$TT" > "${TT}.tsv"
done
for TT in $(mdb-tables file.mdb); do
     mdb-export -D '%Y-%m-%d %H:%M:%S' file.mdb "$TT" > "${TT}.csv"
done

如果表格名称包含空格...

mdb-tables -1 file.mdb| while read TT
do
     mdb-export -D '%Y-%m-%d %H:%M:%S' file.mdb "$TT" > "${TT}.csv"
done

一个可能对转换整个数据库有用的 shell 脚本

#!/bin/sh -e

mdbfn=$1
schemafn=$2
fkfn=$3
datafn=$4
schema=$5

tf=$(tempfile)

pre=""
[ -n "${schema}" ] && pre="\"${schema}\"."

mdb-schema "${mdbfn}" postgres > "${tf}"

# Schema file
echo "BEGIN;\n" > "${schemafn}"

sp=""
[ -n "${schema}" ] && echo "CREATE SCHEMA \"${schema}\";\n" >> "${schemafn}"
[ -n "${schema}" ] && sp="SET search_path = \"${schema}\", pg_catalog;\n" 

echo ${sp} >> "${schemafn}"

awk '($0 !~ /^ALTER TABLE.*FOREIGN KEY.*REFERENCES/) {print;}' "${tf}" >> "${schemafn}"

echo "\nEND;" >> "${schemafn}"

# Foreign keys file
echo "BEGIN;\n" > "${fkfn}"
echo ${sp} >> "${fkfn}"

awk '($0 ~ /^ALTER TABLE.*FOREIGN KEY.*REFERENCES/) {print;}' "${tf}" >> "${fkfn}"

echo "\nEND;" >> "${fkfn}"

# Data file
echo "BEGIN;\n" > "${datafn}"
echo "SET CONSTRAINTS ALL DEFERRED;\n" >> "${datafn}"

mdb-tables -1 "${mdbfn}" | while read TT
do
    mdb-export -Q -d '\t' -D '%Y-%m-%d %H:%M:%S' "${mdbfn}" "$TT" > "${tf}"

    awk -v pre="${pre}" -v TT="${TT}" \
	'(NR==1) {gsub(/\t/,"\",\""); print "COPY " pre "\"" TT "\"(\"" $0 "\") FROM stdin;";}' "${tf}" >> "${datafn}"
    awk '(NR>1) {gsub(/\t\t/,"\t\\N\t"); gsub(/\t$/,"\t\\N"); gsub(/\t\t/,"\t\\N\t"); print;}' "${tf}" >> "${datafn}"

    echo "\\.\n" >> "${datafn}"
done

echo "END;" >> "${datafn}"

rm -f "${tf}"

如果将此脚本保存到文件 access2psql.sh 并设置为可执行,则使用方法如下

access2psql.sh file.mdb schema.sql foreignkeys.sql data.sql pg_schema_name
psql -f schema.sql pg_db_name
psql -f data.sql pg_db_name
psql -f foreignkeys.sql pg_db_name

如果文本列中包含制表符,此脚本将无法正常工作,不过可以修改对 mdb-export 的调用来导出 INSERT 语句以解决此问题。此外,mdb-schema 在表示多列外键方面存在问题,因此可能需要手动编辑 foreignkeys.sql。

Microsoft SQL Server

MySQL

脚本、程序

Ispirer 工具包 可以自动迁移整个数据库模式(表格、视图、存储过程、函数、触发器等)并将数据从 MySQL 迁移到 PostgreSQL。Ispirer 工具包提供免费演示版。

SQLWays 工具包 是一款易于使用的数据库迁移工具,用于在最流行的数据库之间迁移整个数据库架构、SQL 对象、表和数据。该工具可作为免费的在线转换器使用,并提供免费的演示版许可证。

pg_chameleon 是一个 Python 过程,可以将 MySQL 复制到 PostgreSQL。该工具可以分离副本,以实现最小停机时间迁移。

ESF 数据库迁移工具包 如何以简单的方式将 MySQL 迁移到 PostgreSQL。

pgloader 支持从单个命令行迁移整个数据库模式和数据,并提供命令语言,以便在更复杂或更具体的场景中使用。它仍然得到完全支持:请在 GitHub 页面上报告任何错误。它出现在这里 2013 年部分,因为这是它首次发布的时间。


2015

2014

2013

之前

 # To install mysql2psql (under ubuntu 11.10): No need to get from github, just:
 sudo apt-get install ruby gems libmysqlclient-dev libpq-dev
 gem install mysql pg mysql2psql
 # To get info about the mysql socket:
 netstat -l | grep mysql
 mysql2psql # creates a .yml templae
 vi mysql2psql.yml # edit the template
 mysql2psql # connects to mysql database and write into postgres database

文档

Oracle

实用程序、工具、脚本等

  • Ispirer Toolkit 自动迁移整个数据库模式(表、视图、包、存储过程、函数、触发器等)并将数据从 Oracle 迁移到 PostgreSQL。Ispirer Toolkit 的免费演示版可用。
  • SQLWays 工具包 是一款易于使用的数据库迁移工具,用于在最流行的数据库之间迁移整个数据库架构、SQL 对象、表和数据。该工具可作为免费的在线转换器使用,并提供免费的演示版许可证。
  • Convertum.ru 是一款强大的工具,用于自动迁移 25 种以上的数据库,包括从 Oracle 迁移到 PostgreSQL。免费提供 30 天试用版。
  • Omni Loader 是一款大规模并行且横向可扩展的企业级数据库迁移解决方案。可以轻松地将数百万条记录从 Oracle 和 Exadata 加载到本地或云上的 PostgreSQL。完全支持 Oracle CDC 以进行连续复制。
  • CYBERTEC Migrator 企业级 Oracle 迁移软件。GUI 驱动,高性能,低停机时间。
  • Full Convert 是一款可靠且易于使用的数据库迁移和同步解决方案,可以从 40 多个数据库引擎转换到 PostgreSQL 和反向转换(包括 Oracle)。
  • Oracle 和 PostgreSQL 的数据库迁移 Oracle 和 PostgreSQL 之间的跨数据库转换和同步软件。
  • Ora2Pg - Oracle 到 PostgreSQL 数据库模式转换器 作者:Gilles Darold
  • PostgreSQL 的 Oracle 外部数据包装器 (oracle_fdw) - 一个 FDW,提供从 PostgreSQL 内部访问 Oracle 数据库的支持
  • ora_migrator 使用 Oracle 外部数据包装器的 Oracle 迁移工具包
  • Orafce - 在 PostgreSQL 中实现常见的 Oracle 函数以实现兼容性
  • Oracle 到 PostgreSQL - 一个将 Oracle 数据库迁移到 PostgreSQL 服务器的程序。该程序由于直接连接到数据源和目标数据库而具有高性能(它不使用 ODBC 或任何其他中间件软件)。命令行支持允许脚本化、自动化和计划转换过程。
  • AWS Schema Conversion Tool - 用于将您现有的数据库模式从一个数据库引擎转换为另一个数据库引擎(免费下载)。
  • Exportizer Enterprise 将数据从 Oracle 转换为 PostgreSQL 并返回。
  • Splendid Data - Cortex
Cortex 是市场上最先进的 Oracle 数据库到原生 PostgreSQL 自动迁移产品。这可以防止供应商锁定并提供最大程度的本地和/或云部署自由。由于 Cortex 建立了数据和代码对象之间所有必要的依赖关系,并且还自动迁移了平均 80% 的代码对象,因此它是独一无二的。

文档、文章、演示文稿等

PostgreSQL 文档

文章和演示文稿(按时间倒序)

Progress RDBMS

实用程序、工具、脚本等

  • Ispirer Toolkit 自动迁移整个数据库模式并将数据从 Progress 迁移到 PostgreSQL。Ispirer Toolkit 的免费演示版可用。

将 PostgreSQL 数据库转换为其他数据库

  • Ispirer Toolkit 执行 PostgreSQL 到任何流行 RDBMS 的自动迁移。Ispirer Toolkit 的免费演示版可用。
  • SQLWays 工具包 是一款易于使用的数据库迁移工具,用于在最流行的数据库之间迁移整个数据库架构、SQL 对象、表和数据。该工具可作为免费的在线转换器使用,并提供免费的演示版许可证。
  • Convertum.ru 是一款强大的工具,用于自动迁移 25 种以上的数据库,包括从 PostgreSQL 迁移到其他流行数据库。免费提供 30 天试用版。
  • Omni Loader 是一款大规模并行且横向可扩展的企业级数据库迁移解决方案。它支持在 25 种数据库之间快速迁移,包括本地或云上的数据仓库。
  • PostgreSQL 到 InterBase 转储文件转换器 作者:Dobrica Pavlinusic
  • dbForge Studio for PostgreSQL 帮助将数据迁移到各种关系型数据库服务器,如 Oracle、MySQL、SQL Server、MariaDB。
  • Full Convert 是一款可靠且易于使用的数据库迁移和同步解决方案,可以从 40 多个数据库引擎转换到 PostgreSQL 和反向转换
  • OmniDB 是一款开源的、功能全面的数据库管理 Web 工具。目前仅支持 PostgreSQL。更多 RDBMS 支持即将到来,包括将数据库从任何支持的 RDBMS 转换为 PostgreSQL,反之亦然的能力。
  • Exportizer Enterprise 支持从 PostgreSQL 转换为 Oracle、SQL Server、SQLite、Interbase、Firebird、MySQL、DB2、Informix、SQL Anywhere、Microsoft Access、Microsoft Excel、dBase、Paradox、CSV 的数据转换。
  • ESF Database Migration Toolkit 一个工具,在各种数据库格式之间迁移数据(包括 PostgreSQL)。