同じソース修飾子内の複数のデータベースからプルすることが可能かどうか疑問に思っています。ソース修飾子ごとに指定できるデータベース接続は1つだけなので、これが可能かどうかはわかりません。
4 に答える
ベン、
それらが両方とも同じデータベースベンダーのものであり、dbリンクが設定されている場合は、ソース修飾子でDBLINKSを使用できます。
select a.col1,
b.col2
from schema1.table1 a,
schema1.table2@db2 b
where a.col3 = b.col4;
しかし、それらが異種データベースである場合、実装する最良の方法は、2つの異なるソース修飾子(または要件と列の数に基づいて異なるルックアップ)を作成し、パラメーターファイル/セッションを使用して異なる接続に言及することだと思います。
接続に使用されるアカウントが両方のデータベースで同等の権限を持っていると仮定すると、DATABASE_NAME.TABLE_NAMEです。
SELECT
a.id
,a.name
,a.company
,b.company_id
,b.company_name
,b.address
FROM
database1.users as a
JOIN
database2.companies as b ON a.company=b.company_id
これは、2つのデータベース間の相互作用を可能にするデータベースリンクを使用して実装します。多くの理由で好ましい解決策ではありませんが、これはあなたがあなたの理由であなたが言ったことを達成するのに役立ちます。
ただし、理想的なソリューションの観点からは、最初からこれを行うべきではありません:)データが2つの異なるデータベースから流れている場合は、2つの異なるソース修飾子からデータを取得し、必要に応じて、ジョイナーまたはルックアップを選択します(機能要件によって異なります)など。
ログインに少なくとも読み取りアクセス権があり、スキーマが同じサービスにある場合は可能です。
理由により、DBAはdblinksを許可していません...
informaticaを使用する理由の1つは、さまざまなソースに対して特定のソース修飾子(SQ)を作成してから、Join/Unionトランスを使用できることです。一部のデータソースに問題がある場合は信じてください。修正すればトラブルシューティングが簡単になります。
また、あなたが会社を辞め、他のチームがその仕事を引き受けると想像してください。グラフィカルかつ論理的に保守する方が簡単です...