使用Ora2Pg工具把数据从Oracle导入到PostgreSQL

前端之家收集整理的这篇文章主要介绍了使用Ora2Pg工具把数据从Oracle导入到PostgreSQL前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

本文只介绍如何使用Ora2Pg从Oracle导出数据到Postgresql,但是在操作前需要先安装先决软件DBD::Oracle、DBI、Ora2Pg。

安装参考:Linux下安装DBD::Oracle、DBI和Ora2Pg

安装Ora2Pg完成会在/etc目录下生成一个ora2pg目录里面有使用Ora2Pg的配置文件

1、在Oracle上创建测试用户并创建测试表

  1. sys@ORCL>createuserzhaoxuidentifiedbyzhaoxu;
  2.  
  3. Usercreated.
  4.  
  5. sys@ORCL>grantdbatozhaoxu;
  6.  
  7. Grantsucceeded.
  8.  
  9. sys@ORCL>connzhaoxu/zhaoxu;
  10. Connected.
  11.  
  12. zhaoxu@ORCL>createtableempasselect*fromscott.emp;
  13.  
  14. Tablecreated.
  15.  
  16. zhaoxu@ORCL>select*fromemp;
  17.  
  18. EMPNOENAME JOB MGRHIREDATE SALCOMMDEPTNO
  19. ------------------------------------------------------------------------------------------------------------------------------
  20. 7369SMITH CLERK 79021980-12-1700:00:00 800 20
  21. 7499ALLEN SALESMAN 76981981-02-2000:00:00 1600300 30
  22. 7521WARD SALESMAN 76981981-02-2200:00:00 1250500 30
  23. 7566JONES MANAGER 78391981-04-0200:00:00 2975 20
  24. 7654MARTIN SALESMAN 76981981-09-2800:00:00 12501400 30
  25. 7698BLAKE MANAGER 78391981-05-0100:00:00 2850 30
  26. 7782CLARK MANAGER 78391981-06-0900:00:00 2450 10
  27. 7788SCOTT ANALYST 75661987-04-1900:00:00 3000 20
  28. 7839KING PRESIDENT 1981-11-1700:00:00 5000 10
  29. 7844TURNER SALESMAN 76981981-09-0800:00:00 1500 0 30
  30. 7876ADAMS CLERK 77881987-05-2300:00:00 1100 20
  31. 7900JAMES CLERK 76981981-12-0300:00:00 950 30
  32. 7902FORD ANALYST 75661981-12-0300:00:00 3000 20
  33. 7934MILLER CLERK 77821982-01-2300:00:00 1300 10
  34.  
  35. 14rowsselected.

2、修改参数文件

  1. [oracle@rhel6ora2pg]$cp/etc/ora2pg/ora2pg.conf/home/oracle/ora2pg/
  2. [oracle@rhel6ora2pg]$cd/home/oracle/ora2pg/
  3. [oracle@rhel6ora2pg]$viora2pg.conf
  4. [oracle@rhel6ora2pg]$catora2pg.conf
  5. ORACLE_HOME /u02/app/oracle/product/11.2.4/db1
  6. ORACLE_DSN dbi:Oracle:host=192.168.56.2;sid=orcl
  7. ORACLE_USER zhaoxu
  8. ORACLE_PWD zhaoxu
  9. SCHEMAzhaoxu
  10. USER_GRANTS0
  11. DEBUG 0
  12. ORA_INITIAL_COMMAND
  13. EXPORT_SCHEMA 0
  14. CREATE_SCHEMA 1
  15. COMPILE_SCHEMA 0
  16. TYPE TABLE,INSERT
  17. OUTPUT output.sql

3、使用上面修改的参数导出数据

  1. [oracle@rhel6ora2pg]$ora2pg-cora2pg.conf
  2. [========================>]1/1tables(100.0%)endofscanning.
  3. [>]0/1tables(0.0%)endofscanning.
  4. [========================>]1/1tables(100.0%)endoftableexport.
  5. [========================>]14/1rows(1400.0%)TableEMP(14recs/sec)
  6. [========================>]14/1totalrows(1400.0%)-(0sec.,avg:14recs/sec).
  7. [========================>]1/1rows(100.0%)ontotalestimateddata(1sec.,avg:1recs/sec)
  8. [oracle@rhel6ora2pg]$catoutput.sql
  9. --GeneratedbyOra2Pg,theOracledatabaseSchemaconverter,version17.6b
  10. --Copyright2000-2016GillesDAROLD.Allrightsreserved.
  11. --DATASOURCE:dbi:Oracle:host=192.168.56.2;sid=orcl
  12.  
  13. SETclient_encodingTO'UTF8';
  14.  
  15. \setON_ERROR_STOPON
  16.  
  17.  
  18. CREATETABLEemp(
  19. empnosmallint,enamevarchar(10),jobvarchar(9),mgrsmallint,hiredatetimestamp,saldecimal(7,2),commdecimal(7,deptnosmallint
  20. );
  21. --GeneratedbyOra2Pg,version17.6b
  22. --Copyright2000-2016GillesDAROLD.Allrightsreserved.
  23. --DATASOURCE:dbi:Oracle:host=192.168.56.2;sid=orcl
  24.  
  25. SETclient_encodingTO'UTF8';
  26.  
  27. \setON_ERROR_STOPON
  28.  
  29.  
  30. BEGIN;
  31. INSERTINTOemp(empno,ename,job,mgr,hiredate,sal,comm,deptno)VALUES(7369,E'SMITH',E'CLERK',7902,'1980-12-1700:00:00',800,NULL,20);
  32. INSERTINTOemp(empno,deptno)VALUES(7499,E'ALLEN',E'SALESMAN',7698,'1981-02-2000:00:00',1600,300,30);
  33. INSERTINTOemp(empno,deptno)VALUES(7521,E'WARD','1981-02-2200:00:00',1250,500,deptno)VALUES(7566,E'JONES',E'MANAGER',7839,'1981-04-0200:00:00',2975,deptno)VALUES(7654,E'MARTIN','1981-09-2800:00:00',1400,deptno)VALUES(7698,E'BLAKE','1981-05-0100:00:00',2850,deptno)VALUES(7782,E'CLARK','1981-06-0900:00:00',2450,10);
  34. INSERTINTOemp(empno,deptno)VALUES(7788,E'SCOTT',E'ANALYST',7566,'1987-04-1900:00:00',3000,deptno)VALUES(7839,E'KING',E'PRESIDENT','1981-11-1700:00:00',5000,deptno)VALUES(7844,E'TURNER','1981-09-0800:00:00',1500,deptno)VALUES(7876,E'ADAMS',7788,'1987-05-2300:00:00',1100,deptno)VALUES(7900,E'JAMES','1981-12-0300:00:00',950,deptno)VALUES(7902,E'FORD',deptno)VALUES(7934,E'MILLER',7782,'1982-01-2300:00:00',1300,10);
  35.  
  36. COMMIT;

4、把生成的output.sql传到Postgresql服务器上

  1. [oracle@rhel6ora2pg]$scpoutput.sqlpguser@192.168.56.25:/home/pguser/
  2. pguser@192.168.56.25'spassword:
  3. output.sql100%25992.5KB/s00:00

5、在Postgresql数据库上创建对应的数据库用户和Schema

  1. #创建数据库zhaoxu
  2. postgres=#createdatabasezhaoxu;
  3. CREATEDATABASE
  4. postgres=#\l
  5. Listofdatabases
  6. Name|Owner|Encoding|Collate|Ctype|Accessprivileges
  7. -----------+--------+----------+-------------+-------------+-------------------
  8. postgres|pguser|UTF8|en_US.UTF-8|en_US.UTF-8|
  9. template0|pguser|UTF8|en_US.UTF-8|en_US.UTF-8|=c/pguser+
  10. |||||pguser=CTc/pguser
  11. template1|pguser|UTF8|en_US.UTF-8|en_US.UTF-8|=c/pguser+
  12. |||||pguser=CTc/pguser
  13. zhaoxu|pguser|UTF8|en_US.UTF-8|en_US.UTF-8|
  14. zx|pguser|UTF8|en_US.UTF-8|en_US.UTF-8|
  15. (5rows)
  16.  
  17. #创建用户zhaoxu
  18. postgres=#createuserzhaoxusuperuser;
  19. CREATEROLE
  20. postgres=#\dg
  21. Listofroles
  22. Rolename|Attributes|Memberof
  23. -----------+------------------------------------------------------------+-----------
  24. lx|Superuser,Cannotlogin|{}
  25. pguser|Superuser,Createrole,CreateDB,Replication,BypassRLS|{}
  26. sq|Superuser,CreateDB|{}
  27. zhaoxu|Superuser|{}
  28. zx|Superuser|{}
  29.  
  30. #在zhaoxu库下创建Schemazhaoxu
  31. postgres=#\czhaoxuzhaoxu
  32. Youarenowconnectedtodatabase"zhaoxu"asuser"zhaoxu".
  33. zhaoxu=#createschemazhaoxu;
  34. CREATESCHEMA
  35. zhaoxu=#\dn
  36. Listofschemas
  37. Name|Owner
  38. --------+--------
  39. public|pguser
  40. zhaoxu|zhaoxu
  41. (2rows)

6、使用output.sql导入从Oracle导出的数据

  1. [pguser@rhel7~]$psqlzhaoxuzhaoxu<output.sql
  2. SET
  3. CREATETABLE
  4. SET
  5. BEGIN
  6. INSERT01
  7. INSERT01
  8. INSERT01
  9. INSERT01
  10. INSERT01
  11. INSERT01
  12. INSERT01
  13. INSERT01
  14. INSERT01
  15. INSERT01
  16. INSERT01
  17. INSERT01
  18. INSERT01
  19. INSERT01
  20. COMMIT
  21. [pguser@rhel7~]$psqlzhaoxuzhaoxu
  22. psql(9.6.1)
  23. Type"help"forhelp.
  24.  
  25. zhaoxu=#\d
  26. Listofrelations
  27. Schema|Name|Type|Owner
  28. --------+------+-------+--------
  29. zhaoxu|emp|table|zhaoxu
  30. (1row)
  31.  
  32. zhaoxu=#select*fromemp;
  33. empno|ename|job|mgr|hiredate|sal|comm|deptno
  34. -------+--------+-----------+------+---------------------+---------+---------+--------
  35. 7369|SMITH|CLERK|7902|1980-12-1700:00:00|800.00||20
  36. 7499|ALLEN|SALESMAN|7698|1981-02-2000:00:00|1600.00|300.00|30
  37. 7521|WARD|SALESMAN|7698|1981-02-2200:00:00|1250.00|500.00|30
  38. 7566|JONES|MANAGER|7839|1981-04-0200:00:00|2975.00||20
  39. 7654|MARTIN|SALESMAN|7698|1981-09-2800:00:00|1250.00|1400.00|30
  40. 7698|BLAKE|MANAGER|7839|1981-05-0100:00:00|2850.00||30
  41. 7782|CLARK|MANAGER|7839|1981-06-0900:00:00|2450.00||10
  42. 7788|SCOTT|ANALYST|7566|1987-04-1900:00:00|3000.00||20
  43. 7839|KING|PRESIDENT||1981-11-1700:00:00|5000.00||10
  44. 7844|TURNER|SALESMAN|7698|1981-09-0800:00:00|1500.00|0.00|30
  45. 7876|ADAMS|CLERK|7788|1987-05-2300:00:00|1100.00||20
  46. 7900|JAMES|CLERK|7698|1981-12-0300:00:00|950.00||30
  47. 7902|FORD|ANALYST|7566|1981-12-0300:00:00|3000.00||20
  48. 7934|MILLER|CLERK|7782|1982-01-2300:00:00|1300.00||10
  49. (14rows)

数据导入完成。

猜你在找的Oracle相关文章