2

我想将数据从 Oracle 10g 数据库迁移到 Postgres db。Oracle SQL 开发人员有数据迁移选项,但它似乎仅用于将非 oracle db 迁移到 oracle。请让我知道其他选择。

4

4 回答 4

2

有一个用 Perl 编写的专用工具:Ora2Pg

大多数数据库提供从其他数据库导入但不导出到其他数据库的工具。

于 2013-02-12T23:15:59.720 回答
2

我之前尝试过使用 ORA2PG,但它太复杂了,所以我找到了自己的方法来从 sql developer 迁移到 postgres。

这是一步一步的,如果您有任何问题,请告诉我。

如何将数据从 Oracle 数据库迁移到 POSTGRES 数据库!

迁移前要下载的工具:SQL Developer、WINSCP

SQL 开发人员

  • 步骤 1:使用 SQL Developer 登录 Oracle 服务器
  • 第 2 步:右键单击模式名称 > 导出 > 将格式更改为 CSV 并将编码更改为 UTF-8。(确保未选中导出 DDL)(确保文件名以 .csv 结尾)
  • 第 3 步:单击下一步 > 下一步 > 完成(等待导出完成)

从 SQL 开发人员导出文件后

  • 右键单击csv文件,单击打开方式并使用记事本打开它。单击文件 > 另存为 > 将编码更改为 UTF-8 并保存。

打开 WINSCP

  • 第 1 步:在登录到您的服务器之前,单击编辑 > 高级 > 打开“文件名的 UTF-8 编码”。
  • 第 2 步:登录到您的服务器
  • 第 3 步:单击设置 > 内部编辑器 > 将默认编码更改为 UTF-8 > 单击确定
  • 第 4 步:在服务器上的任意位置创建一个新目录,然后将文件拖到该目录并进入 WINSCP

现在该文件应该在您的服务器上使用 UTF-8 编码。

开腻子

在使用 Putty 登录到您的服务器之前,单击 Translation 并将假定的接收数据更改为 UTF-8,然后单击 DATA 并将终端类型字符串更改为 Putty,然后登录到您的服务器。

使用 Putty 登录服务器后,运行以下命令:

语言环境魅力图

此命令将显示服务器的默认编码。

之后运行该命令:

 grep -Rw '/home/pgadmin/data1/1234.csv' -e 'fre' 
  • data1 = 在服务器上创建的目录
  • 1234.csv = data1 目录中的 csv 文件

此命令将显示您文档中的法语单词是否仍然丢失。该命令中的“/home/pgadmin/data1/1234.csv”是您的文件在服务器上的位置,“1234.csv”是 CSV 文件的名称。如果运行该命令后一切正常,现在我们可以将其放入 Postgres 数据库。

使用命令“psql”进入postgres数据库后</p>

  • 第 1 步:确保您已经创建了自己的数据库、模式和表(如果您不知道如何创建,请向下滚动到文档末尾)。
  • 第二步:创建自己的数据库、模式和表后,我们可以运行复制命令。
\Copy joe.data01 FROM ‘home/pgadmin/data1/1234.csv’  DELIMITER ‘,’ CSV HEADER encoding ‘UTF-8’  ;

如果该文件在 csv 文件中已有列名,请在命令中添加“HEADER”。joe.data01= 创建的表名 home/pgadmin/data1/1234.csv = 服务器上文件的位置

要查看模式是否被复制,只需运行命令select * from joe.data01;

要查看法语单词是否丢失,请运行命令 select * from joe.data01 where isa = ‘fre’ ;

  • 如何在 Postgres 上创建数据库:CREATE DATABASE name_of_database ;
  • 如何在 Postgres 上创建 Schema:CREATE SCHEMA name_of_schema;
  • 如何在 Postgres 上创建表: create table joe.data01 (ccca CHAR(50) NOT NULL, isa CHAR(70) NOT NULL, co CHAR(150) NOT NULL) ;
于 2019-12-02T14:42:00.683 回答
1

我们最终使用https://github.com/MIT-LCP/oracle-to-postgres中概述的方法将一个相当大的数据库(约 100 个模式,具有 >1000 个表)从 Oracle 迁移到 Postgres 。

您可以使用pip install oracle2postgres. 更多信息位于:https ://pypi.org/project/oracle2postgres/

演示该方法的 Jupyter Notebook 位于:https ://github.com/MIT-LCP/oracle2postgres/blob/master/migration.ipynb 。

我们的一般方法是镜像源数据库;必要时转换数据类型;创建目标数据库;以块的形式复制数据。这是一个有点hacky的解决方案,但对我们来说效果很好。

# import the package
import oracle2postgres

# create the logfile
oracle2postgres.create_logfile()

# get source database settings
source_config = oracle2postgres.get_source_config()

# get target database settings
target_config = oracle2postgres.get_target_config()

# get settings for migration
migration_config = oracle2postgres.get_migration_config()

# check the schema exist on the source database
source_engine = oracle2postgres.connect_to_source(source_config)
oracle2postgres.check_schema_exist(source_engine,source_config['schema_list'])

# check for null characters in strings in the source database
# if found, they can be removed as explained in the documentation
oracle2postgres.check_for_nulls(source_engine,source_config['schema_list'])

# create a new database on the target database
target_engine = oracle2postgres.connect_to_target(target_config)
oracle2postgres.create_database(target_config['database'],target_engine)

# create schema on the target database
target_engine = oracle2postgres.connect_to_target(target_config,target_config['database'])
oracle2postgres.create_target_schema(source_config['schema_list'],source_engine,target_engine)

# run the migration
oracle2postgres.migrate(source_config,target_config,migration_config)

如果您在重用代码时遇到问题,请随时提出问题,我们将尽最大努力提供帮助。

于 2018-05-17T16:10:36.480 回答
-1
  • 展开表格部分,
  • 然后选择要导出的表
  • 右键,选择导出,
  • 然后选择格式并导出(最好插入语句或 csv)
于 2013-02-12T16:50:20.193 回答