国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ora2pg使用記錄

這篇具有很好參考價(jià)值的文章主要介紹了ora2pg使用記錄。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

ora2pg使用記錄


前言

這篇文章是我在學(xué)習(xí)使用ora2pg過(guò)程中的學(xué)習(xí)記錄,以便日后遺忘查閱;

諸君也可跟隨我的步伐了解一下ora2pg,或可移步如下官方文檔參考學(xué)習(xí):Ora2Pg : Migrates Oracle to PostgreSQL (darold.net)

本文的ora2pg安裝和使用記錄是在win10系統(tǒng)下遷移遠(yuǎn)程O(píng)racle數(shù)據(jù)庫(kù)到遠(yuǎn)程PostgreSQL數(shù)據(jù)庫(kù)的應(yīng)用環(huán)境下進(jìn)行的,如果你的應(yīng)用場(chǎng)景不同,可簡(jiǎn)閱做思路參考!


目錄

目錄
  • ora2pg使用記錄
    • 前言
    • 目錄
    • 初識(shí)ora2pg
      • 一、ora2pg是什么?
        • (一)、Ora2Pg能做的遷移動(dòng)作如下
        • (二)、功能包括
      • 二、ora2pg下載安裝及環(huán)境配置
        • (一)、Perl下載安裝
        • (二)、Oracle客戶端或完整的Oracle安裝配置
          • 1.1 安裝
          • 1.2 配置
        • (三)、Ora2Pg安裝配置
          • 1.1 安裝
          • 1.2 配置(win10下配置)
            • 1.2.1 配置前說(shuō)明
            • 1.2.2 Oracle遷移到PostgreSQL環(huán)境配置
      • 三、ora2pg參數(shù)說(shuō)明
        • (一)、常用命令
        • (二)、參數(shù)幫助說(shuō)明(直譯)
      • 四、ora2pg配置項(xiàng)說(shuō)明
        • (一)、常用配置項(xiàng)
        • (二)、配置項(xiàng)幫助文檔
    • 需求實(shí)驗(yàn)
      • 實(shí)驗(yàn)一:批量導(dǎo)出Oracle中特定表到PostgreSQL的一個(gè)特定schema下
        • (1)需求詳細(xì)說(shuō)明
        • (2)實(shí)驗(yàn)過(guò)程
        • (3)問(wèn)題總結(jié)

初識(shí)ora2pg

一、ora2pg是什么?

Ora2Pg - Oracle to PostgreSQL database schema converter(Oracle到PostgreSQL數(shù)據(jù)庫(kù)模式轉(zhuǎn)換器)

Ora2Pg是一個(gè)開(kāi)源免費(fèi)的數(shù)據(jù)庫(kù)遷移工具,用于將Oracle數(shù)據(jù)庫(kù)遷移到PostgreSQL兼容的模式。它連接您的Oracle數(shù)據(jù)庫(kù),自動(dòng)掃描并提取其結(jié)構(gòu)或數(shù)據(jù),然后生成可以加載到PostgreSQL數(shù)據(jù)庫(kù)中的SQL腳本。Ora2Pg非常易于使用,除了提供連接到Oracle數(shù)據(jù)庫(kù)所需的參數(shù)外,不需要任何Oracle數(shù)據(jù)庫(kù)知識(shí)。

(一)、Ora2Pg能做的遷移動(dòng)作如下

TABLE with constraints, VIEW, MVIEW, TABLESPACE, SEQUENCE, INDEXES, TRIGGER, GRANT, FUNCTION, PROCEDURE, PACKAGE, PARTITION, TYPE, INSERT or COPY, FDW, QUERY, KETTLE, SYNONYM

(二)、功能包括

- Export full database schema (tables, views, sequences, indexes), with unique, primary, foreign key and check constraints.
【導(dǎo)出完整的數(shù)據(jù)庫(kù)架構(gòu)(表、視圖、序列、索引),具有唯一、主鍵、外鍵和檢查約束?!?- Export grants/privileges for users and groups.
【導(dǎo)出用戶和組的授予/權(quán)限?!?- Export range/list partitions and sub partitions.
【導(dǎo)出范圍/列表分區(qū)和子分區(qū)?!?- Export a table selection (by specifying the table names).
【導(dǎo)出選擇的表格(通過(guò)指定表格名稱)。】
- Export Oracle schema to a PostgreSQL 8.4+ schema.
【將Oracle模式導(dǎo)出為PostgreSQL 8.4+模式。】
- Export predefined functions, triggers, procedures, packages and package bodies.
【導(dǎo)出預(yù)定義的函數(shù)、觸發(fā)器、過(guò)程、包和包體。】
- Export full data or following a WHERE clause.
【導(dǎo)出完整數(shù)據(jù)或遵循WHERE子句。】
- Full support of Oracle BLOB object as PG BYTEA.
【完全支持Oracle BLOB對(duì)象作為PG BYTEA。】
- Export Oracle views as PG tables.
【將Oracle視圖導(dǎo)出為PG表?!?- Export Oracle user defined types.
【導(dǎo)出Oracle用戶定義的類型?!?- Provide some basic automatic conversion of PLSQL code to PLPGSQL.
【將Oracle表導(dǎo)出為外部數(shù)據(jù)包裝表?!?- Works on any platform.
【適用于任何平臺(tái)。】
- Export Oracle tables as foreign data wrapper tables.
【將Oracle表導(dǎo)出為外部數(shù)據(jù)包裝表。】
- Export materialized view.
【導(dǎo)出具體化視圖?!?- Show a  report of an Oracle database content.
【顯示Oracle數(shù)據(jù)庫(kù)內(nèi)容的報(bào)告?!?- Migration cost assessment of an Oracle database.
【Oracle數(shù)據(jù)庫(kù)的遷移成本評(píng)估?!?- Migration difficulty level assessment of an Oracle database.
【Oracle數(shù)據(jù)庫(kù)的遷移難度級(jí)別評(píng)估?!?- Migration cost assessment of PL/SQL code from a file.
【從文件遷移PL/SQL代碼的成本評(píng)估?!?- Migration cost assessment of Oracle SQL queries stored in a file.
【存儲(chǔ)在文件中的Oracle SQL查詢的遷移成本評(píng)估?!?- Generate XML ktr files to be used with Penthalo Data Integrator (Kettle)
【生成要與Penthalo Data Integrator(Kettle)一起使用的XML ktr文件】
- Export Oracle locator and spatial geometries into PostGis.
【將Oracle定位器和空間幾何圖形導(dǎo)出到PostGis中?!?- Export DBLINK as Oracle FDW.
【將DBLINK導(dǎo)出為Oracle FDW?!?- Export SYNONYMS as views.
【將SYNONYMS導(dǎo)出為視圖?!?- Export DIRECTORY as external table or directory for external_file extension.
【將DIRECTORY導(dǎo)出為external_file擴(kuò)展名的外部表或目錄?!?- Dispatch a list of SQL orders over multiple PostgreSQL connections
【通過(guò)多個(gè)PostgreSQL連接調(diào)度SQL訂單列表】
- Perform a diff between Oracle and PostgreSQL database for test purpose.
【通過(guò)多個(gè)PostgreSQL連接調(diào)度SQL訂單列表】
- MySQL/MariaDB and Microsoft SQL Server migration.
【MySQL/MariaDB和Microsoft SQL Server遷移?!?

需要注意的是:Ora2Pg盡最大努力將您的Oracle數(shù)據(jù)庫(kù)自動(dòng)轉(zhuǎn)換為PostgreSQL,但仍有手動(dòng)工作要做。為函數(shù)、procedures、包和觸發(fā)器生成的Oracle特定PL/SQL代碼必須經(jīng)過(guò)審查,以匹配PostgreSQL語(yǔ)法。

二、ora2pg下載安裝及環(huán)境配置

(一)、Perl下載安裝

首先因?yàn)镺ra2Pg是Perl語(yǔ)言編寫(xiě)的,所以要使用這個(gè)工具,則必須為其搭建Perl運(yùn)行環(huán)境。注意:安裝版本要大于等于5.10

Perl下載地址:Strawberry Perl for Windows

下載好如下:

ora2pg使用記錄

傻瓜式安裝即可,沒(méi)有特殊操作。

(二)、Oracle客戶端或完整的Oracle安裝配置

1.1 安裝

必須在系統(tǒng)上安裝Oracle Instant Client或完整的Oracle安裝程序。

進(jìn)行數(shù)據(jù)庫(kù)遷移工作這些應(yīng)該都已經(jīng)安裝了,這里不做贅述。

如果確實(shí)沒(méi)有安裝,這里推薦幾篇相關(guān)博文供參考:

  1. Oracle客戶端安裝教程(圖文)
  2. Oracle Client(客戶端) 安裝與配置
  3. oracle數(shù)據(jù)庫(kù)安裝(全步驟詳解)
  4. Oracle下載安裝教程—Oracle19c下載安裝(每一步)

注意:這里由于我的數(shù)據(jù)庫(kù)服務(wù)器都不在本機(jī),這里我使用的是Oracle客戶端進(jìn)行的接下來(lái)的操作。

如果你的Oracle數(shù)據(jù)庫(kù)在本機(jī),這里也推薦一篇文章以作參考!

[Windows下Ora2Pg(Oracle到PostgreSQL遷移工具)的安裝配置及使用教程](https://blog.csdn.net/qq_34272470/article/details/128128287#:~:text=使用Ora2Pg 1 1.cmd定位到解壓后的Ora2Pg目錄中,執(zhí)行下面的命令使用Perl解析Ora2Pg perl Makefile.PL 2 2.上面的命令執(zhí)行完成后,會(huì)有提示,按照提示執(zhí)行下面的命令即可 dmake,get DBD%3A%3AOracle 8 8.安裝DBD%3A%3AOracle驅(qū)動(dòng) install DBD%3A%3AOracle ... 更多項(xiàng)目)

1.2 配置

在使用ora2pg時(shí),我們需要配置Oracle客戶端(或Oracle)的ORACLE_HOME環(huán)境變量,值為客戶端安裝目錄。(這是必須的

官方文檔:You need to have the Oracle client libraries installed and the ORACLE_HOME environment variable must be defined.

ora2pg使用記錄

(三)、Ora2Pg安裝配置

Ora2Pg下載地址

  1. SOURCEFORGE:ora2pg download | SourceForge.net
  2. GitHub:Releases · darold/ora2pg (github.com)

下載好如下:

ora2pg使用記錄

1.1 安裝

解壓到任意目錄即可!

1.2 配置(win10下配置)
1.2.1 配置前說(shuō)明
  1. Ora2Pg連接數(shù)據(jù)庫(kù)并進(jìn)行遷移動(dòng)作,DBIPerl模塊是必須安裝的,并且其版本要大于1.614。

  2. Ora2Pg不僅能夠遷移Oracle數(shù)據(jù)庫(kù),還可以遷移MySQL、SQL Server等,只需要安裝對(duì)應(yīng)的Perl模塊即可。例如:

    遷移Oracle - install DBD::Oracle

    遷移MySQL - install DBD::MySQL

    遷移SQL Server - install DBD::ODBC

    有些ora2pg發(fā)行版可能還需要安裝Time::HiResPerl模塊

  3. Ora2Pg可以導(dǎo)出sql腳本供pg數(shù)據(jù)庫(kù)導(dǎo)入執(zhí)行,也可以直接導(dǎo)入到遠(yuǎn)程pg數(shù)據(jù)庫(kù)。

    要導(dǎo)入sql腳本你還需要安裝PostgreSQL客戶端(psql)

    如果你想動(dòng)態(tài)直接導(dǎo)入到PostgreSQL,你至少還需要安裝DBD::PgCompress::ZlibPerl模塊

    默認(rèn)情況下,Ora2Pg生成sql腳本供PostgreSQL客戶端導(dǎo)入執(zhí)行

1.2.2 Oracle遷移到PostgreSQL環(huán)境配置
  1. 通過(guò)cmd進(jìn)入到Ora2Pg安裝目錄,查看Perl版本(Perl版本要大于5.10

    ora2pg使用記錄

  2. 將把Ora2Pg.pm安裝到Perl庫(kù)

    perl Makefile.PL
    gmake && gmake install
    

    ora2pg使用記錄

  3. 安裝DBIPerl模塊

    cpan
    get DBI
    install DBI
    

    ora2pg使用記錄

  4. 安裝DBD::OraclePerl模塊

    官方文檔:Installing DBD::Oracle require that the three Oracle packages: instant-client, SDK and SQLplus are installed as well as the libaio1 library.

    可以看到,安裝DBD::Oracle還需要Oracle SDK和SQLplus,如果你和我一樣安裝的是精簡(jiǎn)版Oracle客戶端,那么你還需要去官網(wǎng)下載安裝Oracle SDK和SQLplus。

    下載地址:Instant Client for Microsoft Windows (x64) 64-bit (oracle.com)

    直接點(diǎn)擊這里下載的是最新版本的精簡(jiǎn)版客戶端、SQL*Plus、SDK

    ora2pg使用記錄

    下載好如下三個(gè)壓縮包:

    ora2pg使用記錄

    SQL*Plus、SDK的安裝是建立在精簡(jiǎn)版客戶端的基礎(chǔ)上的,你需要先安裝好精簡(jiǎn)版客戶端。

    精簡(jiǎn)版客戶端安裝:精簡(jiǎn)版客戶端客戶端的安裝很簡(jiǎn)單,解壓到任意目錄即可!配置ORACLE_HOME環(huán)境變量。注意!注意!注意!安裝路徑上一定不要有空格或中文字符!否則在安裝DBD::Oracle的時(shí)候,會(huì)報(bào)錯(cuò)!

    SQL*Plus和SDK安裝:直接將壓縮包文件解壓精簡(jiǎn)版客戶端安裝目錄即可!

    ora2pg使用記錄

    安裝好之后,還需要配置LD_LIBRARY_PATH環(huán)境變量(注意,精簡(jiǎn)版客戶端不安裝SDK是沒(méi)有sdk\lib的,安裝DBD::Oracle時(shí)會(huì)加載lib)

    官方文檔:If you are using Instant Client from ZIP archives, the LD_LIBRARY_PATH and ORACLE_HOME will be the same and must be set to the directory where you have installed the files. For example: /opt/oracle/instantclient_12_2/

    ora2pg使用記錄

    做好這一切開(kāi)始安裝DBD::Oracle

    cpan
    get DBD::Oracle
    install DBD::Oracle
    

    ora2pg使用記錄

    安裝完成之后再執(zhí)行一下:install DBD::Oracle,確定是否安裝成功,如下表示安裝成功!

    ora2pg使用記錄

三、ora2pg參數(shù)說(shuō)明

ora2pg可以使用命令行的方式進(jìn)行數(shù)據(jù)遷移,但是這種方式我暫未實(shí)驗(yàn),了解一些常用命令即可!

(一)、常用命令

ora2pg -c | --conf file : 設(shè)置非默認(rèn)的配置文件,默認(rèn)配置文件為 /etc/ora2pg/ora2pg.conf。(指定自定義配置文件路徑)

ora2pg -d | --debug : 使用調(diào)試模式,輸出更多詳細(xì)信息。

(二)、參數(shù)幫助說(shuō)明(直譯)

# ora2pg --help
Usage: ora2pg [-dhpqv --estimate_cost --dump_as_html] [--option value]
-a | --allow str : 指定允許導(dǎo)出的對(duì)象列表,使用逗號(hào)分隔。也可以與 SHOW_COLUMN 選項(xiàng)一起使用。
-b | --basedir dir: 設(shè)置默認(rèn)的導(dǎo)出目錄,用于存儲(chǔ)導(dǎo)出結(jié)果。
-c | --conf file : 設(shè)置非默認(rèn)的配置文件,默認(rèn)配置文件為 /etc/ora2pg/ora2pg.conf。
-d | --debug : 使用調(diào)試模式,輸出更多詳細(xì)信息。
-D | --data_type STR : 通過(guò)命令行設(shè)置數(shù)據(jù)類型轉(zhuǎn)換。
-e | --exclude str: 指定導(dǎo)出時(shí)排除的對(duì)象列表,使用逗號(hào)分隔。也可以與 SHOW_COLUMN 選項(xiàng)一起使用。
-h | --help : 顯示幫助信息。
-g | --grant_object type : 導(dǎo)出指定類型的對(duì)象上的授權(quán)信息,取值參見(jiàn) GRANT_OBJECT 配置項(xiàng)。
-i | --input file : 指定要導(dǎo)入的 Oracle PL/SQL 代碼文件,導(dǎo)入文件時(shí)不需要連接到 Oracle 數(shù)據(jù)庫(kù)。
-j | --jobs num : 設(shè)置用于發(fā)送數(shù)據(jù)到 PostgreSQL 的并發(fā)進(jìn)程數(shù)量。
-J | --copies num : 設(shè)置用于從 Oracle 導(dǎo)出數(shù)據(jù)的并發(fā)連接數(shù)量。
-l | --log file : 設(shè)置日志文件,默認(rèn)為 stdout。
-L | --limit num : 導(dǎo)出數(shù)據(jù)時(shí),每次寫(xiě)入磁盤(pán)之前在內(nèi)存中緩沖的記錄數(shù)量,默認(rèn)值為 10000。
-m | --mysql : 導(dǎo)出 MySQL 數(shù)據(jù)庫(kù)。
-n | --namespace schema : 設(shè)置需要導(dǎo)出的 Oracle 模式。
-N | --pg_schema schema : 設(shè)置 PostgreSQL 中的搜索路徑 search_path。
-o | --out file : 設(shè)置導(dǎo)出的 SQL 文件的存儲(chǔ)路徑。默認(rèn)值為當(dāng)前目錄下的 output.sql 文件。
-p | --plsql : 啟用 PLSQL 代碼到 PLPGSQL 代碼的轉(zhuǎn)換。
-P | --parallel num: 同時(shí)導(dǎo)出多個(gè)表,設(shè)置并發(fā)數(shù)量。
-q | --quiet : 不顯示進(jìn)度條。
-s | --source DSN : 設(shè)置 Oracle DBI 數(shù)據(jù)源。
-t | --type export: 設(shè)置導(dǎo)出類型。該參數(shù)將會(huì)覆蓋配置文件中的導(dǎo)出類型(TYPE)。
-T | --temp_dir DIR: 為多個(gè)同時(shí)運(yùn)行的 ora2pg 腳本指定不同的臨時(shí)存儲(chǔ)目錄。
-u | --user name : 設(shè)置連接 Oracle 數(shù)據(jù)庫(kù)連接的用戶名。也可以使用 ORA2PG_USER 環(huán)境變量。
-v | --version : 顯示 Ora2Pg 版本信息并退出。
-w | --password pwd : 設(shè)置連接 Oracle 數(shù)據(jù)庫(kù)的用戶密碼。也可以使用 ORA2PG_PASSWD 環(huán)境變量。
--forceowner : 導(dǎo)入數(shù)據(jù)時(shí),強(qiáng)制 ora2pg 將導(dǎo)入 PostgreSQL 的表和序列的擁有者設(shè)置為連接 Oracle 數(shù)據(jù)庫(kù)時(shí)的用戶。如果設(shè)置為指定的用戶名,所有導(dǎo)入的對(duì)象屬于該用戶。默認(rèn)情況下,對(duì)象的擁有者為連接 Pg 數(shù)據(jù)庫(kù)的用戶。
--nls_lang code: 設(shè)置 Oracle 客戶端的 NLS_LANG 編碼。
--client_encoding code: 設(shè)置 PostgreSQL 客戶端編碼。
--view_as_table str: 將視圖導(dǎo)出為表,多個(gè)視圖使用逗號(hào)分隔。
--estimate_cost : 在 SHOW_REPORT 結(jié)果中輸出遷移成本評(píng)估信息。
--cost_unit_value minutes: 成本評(píng)估單位,使用分鐘數(shù)表示。默認(rèn)值為 5 分鐘,表示一個(gè) PostgreSQL 專家遷移所需的時(shí)間。如果是第一次遷移,可以設(shè)置為 10 分鐘。
 --dump_as_html : 生成 HTML 格式的遷移報(bào)告,只能與 SHOW_REPORT 選項(xiàng)一起使用。默認(rèn)的報(bào)告是一個(gè)簡(jiǎn)單的文本文件。
 --dump_as_csv : 與上個(gè)參數(shù)相同,但是生成 CSV 格式的報(bào)告。
 --dump_as_sheet : 生成遷移評(píng)估時(shí),為每個(gè)數(shù)據(jù)庫(kù)生成一行 CSV 記錄。
 --init_project NAME: 創(chuàng)建一個(gè)ora2pg 項(xiàng)目目錄結(jié)構(gòu)。項(xiàng)目的頂級(jí)目錄位于根目錄之下。
 --project_base DIR : 定義ora2pg 項(xiàng)目的根目錄,默認(rèn)為當(dāng)前目錄。
 --print_header : 與 --dump_as_sheet 一起使用,輸出 CSV 標(biāo)題信息。
 --human_days_limit num : 設(shè)置遷移評(píng)估級(jí)別從 B 升到 C 所需的人工日數(shù)量。默認(rèn)值為 5 人工日。
 --audit_user LIST : 設(shè)置查詢 DBA_AUDIT_TRAIL 表時(shí)需要過(guò)濾的用戶名,多個(gè)用戶使用逗號(hào)分隔。該參數(shù)只能用于 SHOW_REPORT 和 QUERY 導(dǎo)出類型。
 --pg_dsn DSN : 設(shè)置在線導(dǎo)入時(shí)的 PostgreSQL 數(shù)據(jù)源。
 --pg_user name : 設(shè)置連接 PostgreSQL 的用戶名。
 --pg_pwd password : 設(shè)置連接 PostgreSQL 的用戶密碼。
 --count_rows : 在 TEST 方式下執(zhí)行真實(shí)的數(shù)據(jù)行數(shù)統(tǒng)計(jì)。
 --no_header : 在導(dǎo)出文件中不添加 Ora2Pg 頭部信息。
 --oracle_speed : 用于測(cè)試 Oracle 發(fā)送數(shù)據(jù)的速度。不會(huì)真的處理或者寫(xiě)入數(shù)據(jù)。
 --ora2pg_speed : 用于測(cè)試 Ora2Pg 發(fā)送轉(zhuǎn)換后的數(shù)據(jù)的速度。不會(huì)寫(xiě)入任何數(shù)據(jù)。

四、ora2pg配置項(xiàng)說(shuō)明

ora2pg不僅可以使用命令行的方式進(jìn)行數(shù)據(jù)遷移,還可以通過(guò)自定義配置文件進(jìn)行數(shù)據(jù)遷移配置。

ora2pg安裝目錄下有一個(gè)默認(rèn)配置文件ora2pg.conf.dist,你可以通過(guò)學(xué)習(xí)配置項(xiàng),來(lái)修改此配置文件的默認(rèn)值,來(lái)達(dá)到你想要的業(yè)務(wù)需求。

ora2pg使用記錄

該文件是可自定義進(jìn)行配置項(xiàng)覆蓋的,也就是說(shuō)你可以在任意位置創(chuàng)建一個(gè)自定義配置文件,來(lái)增加自己的配置項(xiàng),而不修改默認(rèn)配置文件。

例如這樣:

ora2pg使用記錄

(一)、常用配置項(xiàng)

注意:配置項(xiàng)和值之間用tab鍵隔開(kāi)

#設(shè)置Oracle主目錄:Oracle的安裝目錄(如果說(shuō)是Oracle客戶端,就是客戶端的路徑)
ORACLE_HOME	D:\test\instantclient_21_11
#設(shè)置Oracle數(shù)據(jù)庫(kù)連接(數(shù)據(jù)源、用戶、密碼)連接遠(yuǎn)程的,需要配置遠(yuǎn)程數(shù)據(jù)庫(kù)ip和端口
ORACLE_DSN	dbi:Oracle:host=127.0.0.1;sid=orcl;port=1521
#填入Oracle用戶名、密碼
ORACLE_USER	username
ORACLE_PWD	pwd***

#配置你想遷移的內(nèi)容,需要遷移什么內(nèi)容,就配置什么內(nèi)容,之間用“,”隔開(kāi)
TYPE TABLE,VIEW,SEQUENCE,TRIGGER,FUNCTION,PROCEDURE

#導(dǎo)出SQL目標(biāo)文件名稱
OUTPUT	user.sql
#導(dǎo)出SQL目標(biāo)目錄
OUTPUT_DIR	C:\test

#配置你要導(dǎo)出的Oracle數(shù)據(jù)庫(kù) 不配置的情況下默認(rèn)導(dǎo)出所有數(shù)據(jù)庫(kù)所有表
SCHEMA MY_Oracle_SCHEMA

#配置允許留下的表,這里可以使用正則表達(dá)式,示例表示遷移表名包含“BI_”的數(shù)據(jù)庫(kù)表
ALLOW	.*BI_.*

#默認(rèn)情況下,Oracle模式不會(huì)導(dǎo)出到PostgreSQL數(shù)據(jù)庫(kù)中,所有對(duì)象都是在默認(rèn)的Pg命名空間下創(chuàng)建的。
#如果還要導(dǎo)出此架構(gòu)并在此命名空間下創(chuàng)建所有對(duì)象,請(qǐng)將export_schema指令設(shè)置為1。
#這將使用默認(rèn)的pg_catalog模式將導(dǎo)出SQL文件頂部的模式搜索路徑設(shè)置為schema指令中設(shè)置的模式名稱。
#如果要更改此路徑,請(qǐng)使用指令PG_SCHEMA。
EXPORT_SCHEMA	0
#在輸出文件開(kāi)始時(shí)啟用/禁用CREATE SCHEMA SQL順序。它在默認(rèn)情況下是啟用的,并關(guān)系TABLE導(dǎo)出類型。
CREATE_SCHEMA	1

#限制導(dǎo)出到哪一個(gè)架構(gòu)
PG_SCHEMA	MY_PG_SCHEMA

#設(shè)置導(dǎo)出目標(biāo)pg數(shù)據(jù)庫(kù)
PG_DSN	dbi:Pg:dbname=my_db;host=127.0.0.1;port=5432
#填入pg用戶名、密碼
PG_USER	pg_username
PG_PWD	pg_pwd***

(二)、配置項(xiàng)幫助文檔

更多配置項(xiàng)詳細(xì)說(shuō)明,請(qǐng)?jiān)斠?jiàn)Ora2Pg官方文檔!

Ora2Pg : Migrates Oracle to PostgreSQL (darold.net)


需求實(shí)驗(yàn)

實(shí)驗(yàn)一:批量導(dǎo)出Oracle中特定表到PostgreSQL的一個(gè)特定schema下

(1)需求詳細(xì)說(shuō)明

匹配Oracle數(shù)據(jù)庫(kù)中所有表名包含"BI_"的數(shù)據(jù)表遷移到PostgreSQL的test_schema下。(遷移表結(jié)構(gòu)和數(shù)據(jù))

(2)實(shí)驗(yàn)過(guò)程

編寫(xiě)ora2pg.conf.dist配置文件:

ORACLE_HOME	D:\test\instantclient_21_11
ORACLE_DSN	dbi:Oracle:host=127.0.0.1;sid=orcl;port=1521
ORACLE_USER	username
ORACLE_PWD	pwd***

TYPE	TABLE,INSERT

ALLOW	.*BI_.*

PG_SCHEMA	test_schema

OUTPUT	user.sql
OUTPUT_DIR	C:\test

執(zhí)行遷移命令:

ora2pg -c C:\Users\zhao-XH\Desktop\ora2pg.conf.dist -d

ora2pg使用記錄

導(dǎo)出sql腳本成功

ora2pg使用記錄

在PostgreSQL客戶端分別執(zhí)行表結(jié)構(gòu)和數(shù)據(jù)插入sql腳本即可!

(3)問(wèn)題總結(jié)

遷移過(guò)程中要注意,字段的類型映射是否符合要求。官方給出的類型映射關(guān)系如下:

oracle類型 postgresql類型
date timestamp
long text
long raw bytea
clob text
nclob text
blob bytea
bfile bytea
raw bytea
rowid oid
float double precision
dec decimal
decimal decimal
double precision double precision
int integer
integer integer
real real
smallint smallint
binary_float double precision
binary_double double precision
tinestamp timestamp
xmltype xml
binary_integer integer
pls_integer integer
timestamp with time zone timestamp with time zone
timestamp with local time zone timestamp with time zone

如果類型映射不符合我們的要求,例如本次實(shí)驗(yàn),我想要NUMBER(1,0)類型進(jìn)行精度映射,而ora2pg工具考慮到效率問(wèn)題,默認(rèn)關(guān)閉NUMBER(p,s) -> numeric(p,s)的映射關(guān)系。采用了取整型的方式,這一點(diǎn)很顯然不是我想要的。查閱官方文檔,我們可以看出,要想開(kāi)啟NUMBER(p,s) -> numeric(p,s)的映射關(guān)系,需要將PG_INTEGER_TYPE配置項(xiàng)的值置為0即可!

官方文檔:

PG_NUMERIC_TYPE

If set to 1 replace portable numeric type into PostgreSQL internal type. Oracle data type NUMBER(p,s) is approximatively converted to real and float PostgreSQL data type. If you have monetary fields or don't want rounding issues with the extra decimals you should preserve the same numeric(p,s) PostgreSQL data type. Do that only if you need exactness because using numeric(p,s) is slower than using real or double.

PG_INTEGER_TYPE

If set to 1 replace portable numeric type into PostgreSQL internal type. Oracle data type NUMBER(p) or NUMBER are converted to smallint, integer or bigint PostgreSQL data type following the value of the precision. If NUMBER without precision are set to DEFAULT_NUMERIC (see below).

DEFAULT_NUMERIC

NUMBER without precision are converted by default to bigint only if PG_INTEGER_TYPE is true. You can overwrite this value to any PG type, like integer or float.

我們也可以設(shè)置配置項(xiàng)來(lái)進(jìn)行手動(dòng)映射。方法如下:

官方文檔:

If you're experiencing any problem in data type schema conversion with this directive you can take full control of the correspondence between Oracle and PostgreSQL types to redefine data type translation used in Ora2pg. The syntax is a comma-separated list of "Oracle datatype:Postgresql datatype". Here are the default list used:

DATA_TYPE       VARCHAR2:varchar,NVARCHAR2:varchar,NVARCHAR:varchar,NCHAR:char,DATE:timestamp(0)...

The directive and the list definition must be a single line.

看到上述說(shuō)明,我們關(guān)注以下幾點(diǎn)

  1. 設(shè)置配置項(xiàng)時(shí),你沒(méi)有必要全部粘貼默認(rèn)映射再進(jìn)行更改,只需要修改不符合你映射要求的數(shù)據(jù)類型即可!
  2. 所有類型映射配置必須在一行上聲明,中間用","隔開(kāi)。

示范,例如官方文檔默認(rèn)將DATE:timestamp(0),而我需要DATE:timestamp。同時(shí)我需要開(kāi)啟精度映射。

那么上述配置文件更改如下:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-710179.html

ORACLE_HOME	D:\test\instantclient_21_11
ORACLE_DSN	dbi:Oracle:host=127.0.0.1;sid=orcl;port=1521
ORACLE_USER	username
ORACLE_PWD	pwd***

TYPE	TABLE,INSERT

ALLOW	.*BI_.*

PG_SCHEMA	test_schema

OUTPUT	user.sql
OUTPUT_DIR	C:\test

PG_INTEGER_TYPE	0
DATA_TYPE	DATE:timestamp

到了這里,關(guān)于ora2pg使用記錄的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 使用docker部署pg數(shù)據(jù)庫(kù)

    使用 Docker 部署 PostgreSQL 數(shù)據(jù)庫(kù)是一種常見(jiàn)的做法,它提供了方便、可移植和可重復(fù)的方式來(lái)運(yùn)行數(shù)據(jù)庫(kù)。下面是一個(gè)簡(jiǎn)單的示例,用于在 Docker 中部署 PostgreSQL 數(shù)據(jù)庫(kù): 首先,確保您已經(jīng)安裝了 Docker 并正確配置了 Docker 環(huán)境。 打開(kāi)終端或命令提示符,并執(zhí)行以下命令來(lái)下載

    2024年02月10日
    瀏覽(21)
  • 使用 GPT4 和 ChatGPT 開(kāi)發(fā)應(yīng)用:前言到第三章

    使用 GPT4 和 ChatGPT 開(kāi)發(fā)應(yīng)用:前言到第三章

    原文:Developing Apps with GPT-4 and ChatGPT 譯者:飛龍 協(xié)議:CC BY-NC-SA 4.0 在發(fā)布僅僅五天后,ChatGPT 就吸引了驚人的一百萬(wàn)用戶,這在科技行業(yè)及其他領(lǐng)域引起了轟動(dòng)。作為一個(gè)副作用,OpenAI API 用于人工智能文本生成的接口突然曝光,盡管它已經(jīng)可用了三年。ChatGPT 界面展示了這

    2024年01月20日
    瀏覽(29)
  • TensorBoard最全使用教程:看這篇就夠了

    TensorBoard最全使用教程:看這篇就夠了

    機(jī)器學(xué)習(xí)通常涉及在訓(xùn)練期間可視化和度量模型的性能。 有許多工具可用于此任務(wù)。 在本文中,我們將重點(diǎn)介紹 TensorFlow 的開(kāi)源工具套件,稱為 TensorBoard,雖然他是TensorFlow 的一部分,但是可以獨(dú)立安裝,并且服務(wù)于Pytorch等其他的框架。 TensorBoard 是一組用于數(shù)據(jù)可視化的工

    2024年01月17日
    瀏覽(62)
  • Git&Gerrit使用筆記——有這篇就夠了

    Git&Gerrit使用筆記——有這篇就夠了

    ????????全稱Global Information Tracker,或者?stupid content tracker,分布式版本控制系統(tǒng)。 ????????Git沒(méi)有中央服務(wù)器,每個(gè)協(xié)作開(kāi)發(fā)者的電腦都是一個(gè)完整的版本庫(kù),工作時(shí)無(wú)需聯(lián)網(wǎng)只需推送。Git可以記錄所有的變更記錄,可以方便查詢和回滾歷史版本。 ????????Gerri

    2024年02月11日
    瀏覽(49)
  • PostgreSQL邏輯備份pg_dump使用及其原理解析

    1、循環(huán)調(diào)用getopt_long解析命令行參數(shù),將參數(shù)保存到static DumpOptions dopt;中 2、判斷參數(shù)是否相容,不相容則退出: 3、調(diào)用CreateArchive打開(kāi)輸出文件,輸出流為fout。該函數(shù)使用4個(gè)文件封裝了4種不同dump文件格式,增加新文件可以增加新的導(dǎo)出文件類型各自封裝,獨(dú)立易于維護(hù)。

    2024年02月13日
    瀏覽(23)
  • 【PG里常見(jiàn)的字段有索引但沒(méi)有使用索引的原因】

    對(duì)于一個(gè)系統(tǒng)而言,穩(wěn)定性、性能、安全是很重要的幾點(diǎn)。運(yùn)維的一些工作也是圍繞著這些去做。對(duì)于某些時(shí)候,業(yè)務(wù)層可能會(huì)向數(shù)據(jù)庫(kù)層提出種種質(zhì)疑:為什么數(shù)據(jù)庫(kù)這么慢?為什么數(shù)據(jù)庫(kù)掛了?為什么我這么用,SQL走不了索引?諸如此類。 其實(shí)對(duì)于了解數(shù)據(jù)庫(kù)和運(yùn)維的大

    2024年02月15日
    瀏覽(15)
  • pg使用sql將文本字符串轉(zhuǎn)換成時(shí)間格式

    使用 PostgreSQL 數(shù)據(jù)庫(kù)的 SQL 查詢語(yǔ)句將文本字符串轉(zhuǎn)換為時(shí)間格式,可以使用 to_timestamp 函數(shù)。 假設(shè)您的文本字符串時(shí)間格式為 “yyyy-MM-dd HH:mm:ss”,您可以使用以下 SQL 查詢來(lái)轉(zhuǎn)換: 這將返回一個(gè)時(shí)間戳類型的結(jié)果,其中包含從文本字符串轉(zhuǎn)換而來(lái)的時(shí)間。 您可以在您的

    2024年02月12日
    瀏覽(31)
  • 使用pg_prewarm緩存PostgreSQL數(shù)據(jù)庫(kù)表

    使用pg_prewarm緩存PostgreSQL數(shù)據(jù)庫(kù)表

    pg_prewarm 直接利用系統(tǒng)緩存的代碼,對(duì)操作系統(tǒng)發(fā)出異步prefetch請(qǐng)求,在應(yīng)用中,尤其在OLAP的情況下,對(duì)于大表的分析等等是非常耗費(fèi)查詢的時(shí)間的,而即使我們使用select table的方式,這張表也并不可能將所有的數(shù)據(jù)都裝載到內(nèi)存中,而pg_prewarm的功能就是完成一個(gè)張表全部進(jìn)入

    2024年02月14日
    瀏覽(30)
  • Hive之函數(shù)篇(使用函數(shù)看這篇足夠了)

    Hive之函數(shù)篇(使用函數(shù)看這篇足夠了)

    目錄 查詢函數(shù)相關(guān)信息: (1)查看系統(tǒng)所有的內(nèi)置函數(shù) (2)查看string相關(guān)的所有函數(shù) (3)查詢某個(gè)函數(shù)的詳細(xì)信息 單行函數(shù): (1)算數(shù)運(yùn)算函數(shù): (2)數(shù)值函數(shù): (3)字符串函數(shù): ?(4)日期函數(shù):(年月日) (5)流程控制函數(shù) (6)集合函數(shù): (7)高級(jí)聚合函數(shù)

    2024年02月04日
    瀏覽(21)
  • 如何使用 OCI Artifacts、ORAS 和 Docker Hub 標(biāo)準(zhǔn)化軟件交付

    如何使用 OCI Artifacts、ORAS 和 Docker Hub 標(biāo)準(zhǔn)化軟件交付

    Docker Hub 是最著名的用于分發(fā)和共享容器映像的注冊(cè)表。不過(guò), Docker Hub 和其他符合 OCI 的注冊(cè)表現(xiàn)在可以做的不僅僅是容器鏡像。ORAS (OCI 注冊(cè)表作為存儲(chǔ))項(xiàng)目將注冊(cè)表轉(zhuǎn)換為通用工件存儲(chǔ),能夠發(fā)布與您的應(yīng)用程序相關(guān)的任何資產(chǎn)。 在本文中,您將了解 ORAS 是什么、它

    2024年02月14日
    瀏覽(20)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包