1

ora2pg を使用して、スキーマとデータを Oracle から postgres データベースに移行しています。

conf ファイルには次の変更があります。

  1. ORACLE_HOME と DSN を提供
  2. エクスポート タイプを次のように設定します: TYPE, TABLE, PACKAGE, COPY, VIEW, GRANT, SEQUENCE, TRIGGER, FUNCTION, PROCEDURE, TABLESPACE, TYPE, PARTITION, MVIEW, QUERY (削除された FDW)

ツールを実行すると、次のエラーが表示されます。

DBD::Oracle::db の準備に失敗しました: ORA-01741: 不正なゼロ長の識別子 (DBD E RROR: OCIStmtPrepare) [for Statement "SELECT FROM ""."GT_LAYER_ENTITIES" a"] at D:/Dwimperl/perl/site /lib/Ora2Pg.pm 行 8808。致命的: ORA-01741: 無効な長さゼロの識別子 (DBD エラー: OCIStmtPrepare) エクスポートを中止しています...

私が提供しているユーザーには DBA 権限があります。

これに対する解決策があれば教えてください。

ありがとう

4

2 に答える 2

0

の正しいバージョンをインストールしますDBD-Oracle。で証明できますDBD-Oracle-1.74
私のアドバイスは、テーブルの抽出、表示などに構成ファイルを使用しないことです。
ただし、最初に新しいプロジェクトを作成します。

ora2pg --project_base /home/user/ --init_project project_name

cd project_name/

ora2pg -c ora2pg.conf -t TABLE -o tables.sql -b schema/tables/

ora2pg -c ora2pg.conf -t SEQUENCE -o sequence.sql -b schema/sequences/

ora2pg -c ora2pg.conf -t TRIGGER -o trigger.sql -b schema/triggers/

ora2pg -c ora2pg.conf -t PROCEDURE -o procedure.sql -b schema/procedures

ora2pg -c ora2pg.conf -t VIEW -o view.sql -b schema/views/

ora2pg -c ora2pg.conf -t GRANT -o grant.sql -b schema/grants/

そしてdb postgresテーブル、シーケンスなどにインポートした後...最後に、dbにデータをインポートします。

ora2pg -c ora2pg.conf -t INSERT -o data.sql -b data/

インポート用の psql データベースとユーザーを最初に作成することが最も重要です。

于 2016-11-08T14:40:15.707 に答える