ora2pg使用

本文介绍ora2pg迁移到pg12的用法

ora2pg官网:Ora2Pg:将 Oracle 迁移到 PostgreSQL (darold.net)

1、安装oracle

1.1、oracle11g在本地

无动作

1.2、oracle非本地

#libsqlplus依赖库
yum install libnsl2-devel libnsl2 -y
ln -s /usr/lib64/libnsl.so.2 /usr/lib64/libnsl.so.1#下面2个库安装DBD-Oracle时候冲突,我卸载了
yum remove libxcrypt-devel-4.1.1-6.el8.x86_64
yum remove man-pages-5.02-6.ky10.noarch

安装Oracle Instant Client。下载地址  Instant Client for Linux x86-64 (64-bit) | Oracle Hong Kong SAR, PRC

找到对应版本,我下载的是ZIP版本。

  • instantclient-basic-linux.x64-11.2.0.4.0.zip
  • instantclient-sqlplus-linux.x64-11.2.0.4.0.zip
  • instantclient-jdbc-linux.x64-11.2.0.4.0.zip
  • instantclient-sdk-linux.x64-11.2.0.4.0.zip
useradd oracle
unzip instantclient-basic-linux.x64-11.2.0.4.0.zip -d /home/oracle
unzip instantclient-sqlplus-linux.x64-11.2.0.4.0.zip -d /home/oracle
unzip instantclient-jdbc-linux.x64-11.2.0.4.0.zip -d /home/oracle
unzip instantclient-sdk-linux.x64-11.2.0.4.0.zip -d /home/oraclecd /home/oracle/instantclient_11_2vi /etc/profile
ORACLE_BASE=/home/oracle/instantclient_11_2
ORACLE_HOME=/home/oracle/instantclient_11_2
LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH
PATH=$PATH:$ORACLE_HOME
export ORACLE_BASE ORACLE_HOME PATH LD_LIBRARY_PATH
source /etc/profile#创建
mkdir -p /home/oracle/instantclient_11_2/network/admin
cd /home/oracle/instantclient_11_2/network/admin
vi tnsnames.ora
ORCL =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.197)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = ORCL)))

2、安装pg12

pg12

3、安装perl

官网:DBI-1.643 - Database independent interface for Perl - metacpan.org 

DBI,Database Independent Interface,是Perl语言连接数据库的接口 

yum install -y perl perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker
cd /root
wget https://cpan.metacpan.org/authors/id/T/TI/TIMB/DBI-1.643.tar.gz
tar -xvf DBI-1.643.tar.gz
cd DBI-1.643
perl Makefile.PL
make
make install

4、安装DBD::Pg模块

 DBD-Pg-3.18.0 - DBI PostgreSQL interface - metacpan.org

The usual steps to install DBD::Pg:

        1.   perl Makefile.PL
        2.   make
        3.   make test
        4.   make install

Do steps 1 to 2 as a normal user, not as root! 

cd /opt
wget https://cpan.metacpan.org/authors/id/T/TU/TURNSTEP/DBD-Pg-3.18.0.tar.gz
tar -xvf DBD-Pg-3.18.0.tar.gz#授权给非root用户
chown pg127:pg127 DBD-Pg-3.18.0 -R
su - pg127
cd /opt/DBD-Pg-3.18.0
export POSTGRES_INCLUDE="/usr/local/pg127/include"
export POSTGRES_LIB="/usr/local/pg127/lib"
perl Makefile.PL
make#切换到root
su - root
cd /opt/DBD-Pg-3.18.0
make install

5、安装DBD::Oracle模块

DBD::Oracle - Oracle database driver for the DBI module - metacpan.org

cd /opt
wget https://cpan.metacpan.org/authors/id/P/PY/PYTHIAN/DBD-Oracle-1.74.tar.gz
tar -xvf DBD-Oracle-1.74.tar.gz
cd DBD-Oracle-1.74/
perl Makefile.PL
make && make install

6、安装ora2pg

6.1、安装ora2pg

cd /opt
wget https://sourceforge.net/projects/ora2pg/files/24.3/ora2pg-24.3.tar.gz/download
tar -xvf download
cd ora2pg-24.3/
perl Makefile.PL
make
make install

6.2、验证软件

测试依赖库是否安装成功

[root@baidu ora2pg-24.3]#vi check.pl
cat check.pl
#!/usr/bin/perl
use strict;
use ExtUtils::Installed;
my $inst=ExtUtils::Installed->new();
my @modules = $inst->modules();
foreach(@modules){my $ver = $inst->version($_) || "???";printf("%-12s -- %s\n",$_,$ver);}
exit;[root@baidu ora2pg-24.3]#perl check.pl
DBD::Oracle  -- 1.74
DBD::Pg      -- 3.18.0
DBI          -- 1.643
Ora2Pg       -- 24.3
Perl         -- 5.28.3

6.3、测试oracle连通性

 注意:SCHEMA需要填用户,oracle没有模式概念

/opt/ora2pg
[root@baidu ora2pg]# vi ora2pg_table.conf
ORACLE_HOME /home/oracle/instantclient_11_2
ORACLE_DSN  dbi:Oracle:host=192.168.10.197;sid=orcl
ORACLE_USER wangdp
ORACLE_PWD  aaaaaa
SCHEMA  wangdp
TYPE TABLE
PG_NUMERIC_TYPE    0
PG_INTEGER_TYPE    1
DEFAULT_NUMERIC float
SKIP    fkeys pkeys ukeys indexes checks
NLS_LANG    AMERICAN_AMERICA.UTF8
OUTPUT     /opt/ora2pg/table.sql#执行
[root@baidu ora2pg]# ora2pg -t SHOW_VERSION -c ora2pg_table.conf
WARNING: target PostgreSQL version must be set in PG_VERSION configuration directive. Using default: 11
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0

7、导出表测试

7.1、创建表5张表

--创建表,GIS统称用SDO_GEOMETRY
CREATE TABLE TEST_PONINT (id NUMBER PRIMARY KEY,geometry SDO_GEOMETRY
);--创建表,GIS统称用SDO_GEOMETRY
CREATE TABLE TEST_LINE (id NUMBER PRIMARY KEY,geometry SDO_GEOMETRY
);--创建表,GIS统称用SDO_GEOMETRY
CREATE TABLE TEST_POLYGON (id NUMBER PRIMARY KEY,geometry SDO_GEOMETRY
);--创建表,GIS统称用SDO_GEOMETRY
CREATE TABLE TEST_COLLECTION (id NUMBER PRIMARY KEY,geometry SDO_GEOMETRY
);CREATE TABLE "WANGDP"."TABLE1"  (	COLUMN1 INTEGER NULLCOLUMN2 VARCHAR2(100) NULL
) ;

7.2、导出表

[root@baidu ora2pg]# ora2pg -c ora2pg_table.conf
WARNING: target PostgreSQL version must be set in PG_VERSION configuration directive. Using default: 11
[2024-07-02 17:39:24] [========================>] 5/5 tables (100.0%) end of scanning.
[2024-07-02 17:39:24] [========================>] 5/5 tables (100.0%) end of table export.
Fixing function calls in output files...

查看导出表,是按照postgis的格式导出的,很OK

CREATE TABLE table1 (column1 numeric(38),column2 varchar(100)
) ;
CREATE TABLE test_collection (id float NOT NULL,geometry geometry(GEOMETRY,4326)
) ;
CREATE TABLE test_line (id float NOT NULL,geometry geometry(GEOMETRY,4326)
) ;
CREATE TABLE test_polygon (id float NOT NULL,geometry geometry(GEOMETRY,4326)
) ;
CREATE TABLE test_ponint (id float NOT NULL,geometry geometry(GEOMETRY,4326)
) ;

8、导出数据

8.1、插入数据

--插入点数据
INSERT INTO TEST_PONINT (id, geometry)
VALUES (1, SDO_GEOMETRY(2001,  -- 2D 点8307,  -- SRID (WGS 84)SDO_POINT_TYPE(10.0, 20.0, NULL),NULL,NULL
));
--插入线串
INSERT INTO TEST_LINE (id, geometry)
VALUES (2, SDO_GEOMETRY(2002,  -- 2D 线串8307,  -- SRID (WGS 84)NULL,SDO_ELEM_INFO_ARRAY(1, 2, 1),SDO_ORDINATE_ARRAY(10.0, 20.0, 30.0, 40.0)
));
--插入多边形
INSERT INTO TEST_POLYGON (id, geometry)
VALUES (3, SDO_GEOMETRY(2003,  -- 2D 多边形8307,  -- SRID (WGS 84)NULL,SDO_ELEM_INFO_ARRAY(1, 1003, 1),SDO_ORDINATE_ARRAY(10.0, 10.0, 20.0, 10.0, 20.0, 20.0, 10.0, 20.0, 10.0, 10.0)
));
--插入集合数据
INSERT INTO TEST_COLLECTION (id, geometry)
VALUES (4, SDO_GEOMETRY(2004,  -- 2D 集合8307,  -- SRID (WGS 84)NULL,SDO_ELEM_INFO_ARRAY(1, 1, 1, 1, 2, 1, 7, 1003, 1),SDO_ORDINATE_ARRAY(10.0, 20.0, -- 点15.0, 25.0, 30.0, 35.0, -- 线串40.0, 40.0, 50.0, 50.0, 50.0, 60.0, 40.0, 60.0, 40.0, 40.0 -- 多边形)
));
INSERT INTO WANGDP.TABLE1(COLUMN1, COLUMN2) VALUES(0, 'abc');
INSERT INTO WANGDP.TABLE1(COLUMN1, COLUMN2) VALUES(1, '中国');

8.2、导出数据

编写导出配置文件

[root@baidu ora2pg]# vi ora2pg_data.conf
ORACLE_HOME /home/oracle/instantclient_11_2
ORACLE_DSN  dbi:Oracle:host=192.168.10.197;sid=orcl
ORACLE_USER wangdp
ORACLE_PWD  aaaaaa
SCHEMA  wangdp
TYPE COPY
PG_NUMERIC_TYPE    0
PG_INTEGER_TYPE    1
DEFAULT_NUMERIC float
SKIP    fkeys pkeys ukeys indexes checks
NLS_LANG    AMERICAN_AMERICA.UTF8
OUTPUT     /opt/ora2pg/data.sql

导出

[root@baidu ora2pg]# ora2pg -c ora2pg_data.conf
WARNING: target PostgreSQL version must be set in PG_VERSION configuration directive. Using default: 11
[2024-07-02 18:03:35] [========================>] 5/5 tables (100.0%) end of scanning.
[2024-07-02 18:03:50] [========================>] 2/1 rows (200.0%) Table TABLE1 (2 recs/sec)
[2024-07-02 18:03:50] [=========>               ] 2/5 total rows (40.0%) - (1 sec., avg: 2 recs/sec).
[2024-07-02 18:03:50] [========================>] 1/1 rows (100.0%) Table TEST_COLLECTION (1 recs/sec)
[2024-07-02 18:03:50] [==============>          ] 3/5 total rows (60.0%) - (1 sec., avg: 3 recs/sec).
[2024-07-02 18:03:50] [========================>] 1/1 rows (100.0%) Table TEST_LINE (1 recs/sec)
[2024-07-02 18:03:50] [===================>     ] 4/5 total rows (80.0%) - (1 sec., avg: 4 recs/sec).
[2024-07-02 18:03:51] [========================>] 1/1 rows (100.0%) Table TEST_POLYGON (1 recs/sec)
[2024-07-02 18:03:51] [========================>] 5/5 total rows (100.0%) - (2 sec., avg: 2 recs/sec).
[2024-07-02 18:03:51] [========================>] 1/1 rows (100.0%) Table TEST_PONINT (1 recs/sec)
[2024-07-02 18:03:51] [========================>] 6/5 total rows (120.0%) - (2 sec., avg: 3 recs/sec).
[2024-07-02 18:03:51] [========================>] 5/5 rows (100.0%) on total estimated data (2 sec., avg: 2 recs/sec)
Fixing function calls in output files...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/41500.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

#招聘数据分析#2024年6月前程无忧招聘北上广深成渝对比情况

#招聘数据分析#2024年6月前程无忧招聘北上广深成渝对比情况 0、根据前程无忧不完全样本统计,北上广深成都重庆平均月工资从高到低依次为 北京15441元、上海14425元、深圳13310元、广州11192元、成都10539元、重庆10290。 1、成都招聘样本数全量35228个&#xff0c…

数据库原理之并发控制的基本概念

我们今天继续来看数据库原理,我们简单讲讲数据库的并发控制。 并发控制的定义 并发控制是为了保证事务的隔离性和一致性,数据库管理系统需要对并发操作进行正确调度。并发控制的主要技术有:、时间戳、乐观控制法、多版本并发控制等。 并发操…

TreeMap、HashMap 和 LinkedHashMap 的区别

TreeMap、HashMap 和 LinkedHashMap 的区别 1、HashMap2、LinkedHashMap3、TreeMap4、总结 💖The Begin💖点点关注,收藏不迷路💖 在 Java 中,TreeMap、HashMap 和 LinkedHashMap 是三种常用的集合类,它们在…

vue判断元素滚动到底部后加载更多

背景&#xff1a;需要判断在元素滚动到底部后自动加载更多操作。 div&#xff1a; div class"medium-msg-main" id"mediumScroll"><div v-for"(item,i) in focusNewsList" :key"i" class"medium-msg-box left-bg mb-5&qu…

Linux httpd服务详解

1. 引言 在现代Web开发和服务器管理中&#xff0c;httpd&#xff08;Apache HTTP Server&#xff09;是最流行的Web服务器软件之一。作为开源项目&#xff0c;Apache HTTP Server为用户提供了稳定、灵活和高度可配置的Web服务解决方案。本文将详细介绍httpd服务的各个方面&…

SQL 别名

SQL 别名 在SQL(Structured Query Language)中,别名是一种常用的技术,用于给表或列指定一个临时的名称,以便在查询中使用。这种技术可以提高查询的可读性,使查询更加清晰和易于理解。本文将详细介绍SQL别名的概念、用途、语法以及在不同场景下的应用示例。 1. 什么是SQ…

APP渗透-android12夜神模拟器+Burpsuite实现

一、夜神模拟器下载地址&#xff1a;https://www.yeshen.com/ 二、使用openssl转换证书格式 1、首先导出bp证书 2、将cacert.der证书在kali中转换 使用openssl生成pem格式证书,并授予最高权限 openssl x509 -inform der -in cacert.der -out cacert.pem chmod 777 cacert…

IT高手修炼手册(2)cmd命令

一、前言 CMD&#xff08;命令提示符&#xff09;是Windows操作系统中的一个重要工具&#xff0c;用于执行命令行操作&#xff0c;旨在提高用户在CMD中的操作效率和便利性。 二、常用cmd命令及其简要说明 1. 快捷键F1&#xff1a;按F1一次&#xff0c;命令提示符向后切换到已经…

进程间通讯与同步技术第一篇,共享内存

进程间通讯与同步技术第一篇&#xff0c;共享内存 共享内存C的shared_memory_object类创建共享内存段映射共享内存段 Linux API信号量同步 共享内存 共享内存是最快的进程间通信机制。操作系统将一个内存段映射到多个进程的地址空间中&#xff0c;这样多个进程就可以在该内存…

利用redis set 实现点赞案例 zset 对点赞进行排序

基于数据库 表 CREATE TABLE IF NOT EXISTS liked_record (id bigint NOT NULL AUTO_INCREMENT COMMENT 主键id,user_id bigint NOT NULL COMMENT 用户id,biz_id bigint NOT NULL COMMENT 点赞的业务id,biz_type VARCHAR(16) NOT NULL COMMENT 点赞的业务类型,create_time da…

海外金融机构银行保险证券数字化转型营销销售数字化成功案例讲师培训师讲授开户销售营销客户AI人工智能创新思维

金融机构需要数字营销的主要原因 数字银行、直接存款和移动网络的兴起让客户无需前往当地分行即可轻松办理银行业务。这些举措不仅提升了用户体验&#xff0c;也迫使银行向数字化世界迈进。 金融服务公司需要在数字营销渠道上保持稳固的地位&#xff0c;以免落后于大型机构。…

Stream的获取、中间方法、终结方法

1、获取Stream流 单列集合&#xff1a;foreach完整版 双列集合通过Ketset()、entryset() 数组的&#xff1a;通过Arrays Stream流的中间方法&#xff1a;链式编程&#xff0c;原stream流只能使用一次 filter&#xff1a; limit、skip&#xff1a; distinct(有自定义对象需要重写…

群体优化算法---猫群算法介绍,物流配送路径规划(包含3-opt,贪心算法)

介绍 猫群算法&#xff08;Cat Swarm Optimization&#xff0c;CSO&#xff09;是一种新型的基于群体智能的优化算法&#xff0c;由Chu et al.在2006年提出。该算法通过模拟猫的行为&#xff0c;尤其是其两种主要的行为&#xff1a;追捕行为&#xff08;seeking mode&#xff…

LangChain(三)基础问答大模型,从LLMchain开始了解chain!纯新手向

背景 经过前面两篇内容的部分&#xff0c;我想大家应该对Langchain有了一个初步的了解。那么我们接下来完善我们的基础大模型吧&#xff01;开始chain的尝试&#xff01; Chain的说明 chain可谓是Langchain的精髓所在&#xff0c;不使用chain&#xff0c;也就没必要学习Lang…

AWS云服务器的竞争优势

亚马逊网络服务&#xff08;AWS&#xff09;作为全球最大的云计算平台&#xff0c;在激烈的市场竞争中一直保持领先地位。相较于其他云服务提供商&#xff0c;AWS云服务器具有多方面的显著优势&#xff0c;使其成为众多企业和开发者的首选&#xff0c;我们结合九河云的分析一起…

机器学习 - one-hot编码技术

One-hot编码是一种数据处理技术&#xff0c;主要用于将分类变量转换为适合机器学习算法处理的格式。在One-hot编码中&#xff0c;每个类别值都会被转换成一个二进制向量&#xff0c;其中只有一个元素是1&#xff0c;其余所有元素都是0。这种编码方式确保了类别之间的独立性和唯…

如何在前端网页实现live2d的动态效果

React如何在前端网页实现live2d的动态效果 业务需求&#xff1a; 因为公司需要做机器人相关的业务&#xff0c;主要是聊天形式的内容&#xff0c;所以需要一个虚拟的卡通形象。而且为了更直观的展示用户和机器人对话的状态&#xff0c;该live2d动画的嘴型需要根据播放的内容来…

WEBHTTP

目录 理解HTTP协议请求流程 1 1 Web基础 2 Hosts文件 1 1 2网页与HTML 2 HTML概述 1 1 3静态网页与动态网页 1.2HTTP协议 1 2 1 HTTP协议概述 1 2 2 HTTP方法 HTTP支持几种不同的请求命令&#xff0c;这些命令被称为HTTP方法(HTTP method 表1一3 HTTP方法 表1&#…

开源协作wiki和文档软件Docmost

什么是 Docmost &#xff1f; Docmost 是一款开源协作 wiki 和文档软件。它是 Confluence 和 Notion 等软件的开源替代品。使用 Docmost 可以无缝创建、协作和共享知识。非常适合管理您的 wiki、知识库、文档等。目前 Docmost 处于测试阶段。 软件的主要特点 安装 在群晖上以 …

Python面试题:请解释 Python 的垃圾回收机制

Python 的垃圾回收机制主要通过引用计数&#xff08;Reference Counting&#xff09;和循环垃圾收集&#xff08;Cycle Garbage Collection&#xff09;来管理内存。以下是对这两种机制及其相关知识点的详细解析&#xff1a; 引用计数 原理 每个对象都有一个引用计数器&…