Oracle→PostgreSQLマイグレーション時の「型」について/Ora2Pgについて

Oracleにあるテーブルと同様のものをPostgreSQLで作成する場合、
型については大体以下の様に変換すれば、CREATEを作るときに困ることがなく、
OracleデータをCSVで落とし、そのままPostgreSQLに登録した時もエラーにならない(基本的には)。

1.主な変換表

・NUMBER(4, 0):整数
→整数の場合は9桁までならinteger
→10桁以上はbigint
 
・NUMBER(4, 2):小数点あり
→numeric(4, 2)
 
・VARCHAR2(24):可変長文字列
→varchar(24)
→あるいはcharacter varying(24)
 
・DATE:日付
→timestamp
 
・条件分岐
DECODE(列名, 条件1, 結果1, 条件2, 結果2, 結果3)

CASE 列名
WHEN 条件1THEN 結果1
WHEN 条件2THEN 結果2
ELSE 結果3 END
 

2.Ora2Pgについて

・OracleDB用のDDLDMLファイルがあるなら「Ora2Pg」を使うのも手。
一応、インストール方法と実施方法を記載。(下記はWindows10でのインストール)
■ora2pgをDL
https://github.com/darold/ora2pg
[↓Code]からDownload ZIPを選択して落とす。
 
■Strawberry PerlのDL
https://strawberryperl.com/releases.html
Portableの64bitを落とす。
 
■Strawberry Perlを解凍
解凍後、コマンドプロンプトでportableshell.batを実行(管理者権限は不要)
 

>portableshell.bat
(略)
Perl executable: C:\Users\hondxuser01\Downloads\strawberry-perl-5.32.1.1-64bit-portable\perl\bin\perl.exe
Perl version : 5.32.1 / MSWin32-x64-multi-thread

 
環境変数にPATHを通す
C:\strawberry-perl-5.32.1.1-64bit-portable\perl\bin

※一旦再起動

■ora2pgを解凍
ora2pgのフォルダ配下で以下のコマンドを実行

>perl Makefile.PL
(略)
Now type: dmake && dmake install

 
■Makeの実行
上記の通り、dmake && dmake installを実行すると怒られる。

>dmake && dmake install
#############################################################
### ###
### DMAKE WARNING ###
### ###
### Do not use dmake.exe utility as it is no longer ###
### part of Strawberry Perl, use gmake.exe instead! ###
### ###
### If you have troubles with CPAN client delete: ###
### %USERPROFILE%\AppData\Local\.cpan\CPAN\MyConfig.pm ###
### ###
#############################################################

※dmake.exeユーティリティはStrawberryPerlの一部ではなくなったため、使用しないでください。代わりにgmake.exeを使用してください。
とのこと。
 
助言に従って、gmakeを使用する。

>gmake && gmake install

Cドライブ直下にora2pgフォルダが作成される。
 
■ora2pgコマンド実行
とりあえず、コマンドが動くことを確認。

>ora2pg
FATAL: can't find configuration file C:\ora2pg\ora2pg.conf

Usage: ora2pg [-dhpqv --estimate_cost --dump_as_html] [--option value]

-a | --allow str : Comma separated list of objects to allow from export.
Can be used with SHOW_COLUMN too.

 
※PCを再起動すると環境変数が読み込まれず、コマンドが打てない場合
その場合はしょうがないので、DLしたフォルダのora2pgを直接叩くことでも実行可能
C:\DataDirectory\04:soft\ora2pg-21.1\blib\script\ora2pg

■OracleSQL→ポスグレSQL変換コマンド

> ora2pg -c ora2pg_dist.conf -i aaaaaaaaaaa.sql -o aaaaaaaaaaa_pg.sql -t QUERY

 
「-c」でコンフィグファイルを指定する必要がある。
基本的にはora2pg配下にあるconfファイルを指定する。
 
_/_/_/_/_/_/_/_/_/_/_/_/_/_/
 
あまり関係ないけど、ポスグレではCREATEするときはテーブル名もカラム名も全て小文字がよい。
例えば、社員テーブルをEmployeeという名前で登録した場合、
SELECTのFROMで「EMPLOYEE」や「Employee」で実行すると、すべて小文字にてSQLが発行されるため、
そんなテーブルはない、と判断されてエラーが返ってくる。
一応、""(ダブルクォーテーション)でテーブル名を囲うことで解決は可能だが、
いちいちSELECTで設定するのはきついので、基本的には小文字で全て管理していくほうが混乱が発生しない。
参考:https://ringtreelab.hateblo.jp/entry/2021/10/08/214007