2016-09-06 9 views
0

私はIntelliJを使用してアプリケーションとOracle Databaseを作成しています。IntelliJデータベースツールを使用してseveralsデータベーススキーマをクエリできますか?

現時点では、古いデータベースSCHEMAのデータを新しいものに移行する必要があります。テーブルとカラムが変更され、IQBaseスクリプトを作成します。このスクリプトは、新しいアプリケーションバージョンのインストール時に別のサーバで実行されます。

だから私は持っている、古いSCHEMAのデータは(私たちはおよそOLD_SCHEMAをお話します)と私はSELECTにこれらのデータは、それらとINSERT INTONEW_SCHEMAを変換します。だから私は次のように何かをしたい:

INSERT INTO NEW_SCHEMA.TABLE_X (........) SET (SELECT ..... FROM OLD_SCHEMA.TABLE_Y) 

しかし、私はのIntelliJにバンドルされたデータベースツールで、クエリのこの種を実行しようとしているとき、私は非既存のテーブルまたはビューがあることが、エラーを説明しました。

[2016-09-06 15:22:29] [42000][942] ORA-00942: Table ou vue inexistante 

私は私のクエリをテストするには、SQLコンソールファイルを作成するとき、それは2つのスキーマの1にリンクされている、ので、それは、通常のようです。

2つのスキーマのデータを使用するためにクエリを実行する方法はありますか?

ありがとうございます。

PS:インポート、エクスポートは解決策ではなく、構造が大きく変更されました。

答えて

1

権限が与えられていない限り、別のスキーマ内のテーブルを照会することはできません。 new_schemaに接続して、old_schema.table_yを照会する場合は、old_schema.table_yに対して選択権限が必要です。

これを行うにはold_schemaに接続し、これらの特権を付与します。

grant select on table_y to new_schema; 

これで(set文なしで)クエリが機能するようになりました。

構文例については、このリンクを参照してください。 Oracle insert from select into table with more columns

+0

ようsintax使う必要がある、それは魔法のように動作します! – jdelagorce

2

ユーザーは2つのスキーマを使用するには、両方のスキーマで(SELECT、INSERTなどで)権限を付与する必要があります。

はまた、あなたは、INSERT文の間違ったsintaxを使用し、あなたはどうもありがとうございました。この

INSERT INTO NEW_SCHEMA.TABLE_X (........) SELECT ..... FROM OLD_SCHEMA.TABLE_Y 
+0

ありがとう、私はちょうど良い構文を探していた:) – jdelagorce

+0

実際には、それは推定よりも少し難しいだろうと思われる:私は新しいテーブルに古いデータを挿入したいが、完全ではない。フォームの例シーケンスを使って動的IDを生成し、古いテーブルの1つか2つの古いデータを取得して新しいデータを追加したいのですが...アイデアはありますか? – jdelagorce

+0

シーケンスはSELECT文で使用できます。例えば、 'SELECT NEW_SHEMA.my_sequence.nextval、column1、column2、... FROM OLD_SCHEMA.TABLE_Y' – AlexSmet

関連する問題