実際のSQLパーサを使用せずにPostgesqlで複雑なSELECTクエリで使用されるすべてのテーブルを取得する方法はありますか? ver。 9.5以上が使用されます。Postgresql SELECTクエリで使用されているすべてのテーブルのリストを取得
3
A
答えて
5
試してください:あなたが使用しているプログラミング言語
create or replace function get_query_tables(p_query text) returns text[] language plpgsql as $$
declare
x xml;
begin
execute 'explain (format xml) ' || p_query into x;
return xpath('//explain:Relation-Name/text()', x, array[array['explain', 'http://www.postgresql.org/2009/explain']])::text[];
end $$;
select get_query_tables('your query here');
-2
TableList:=TStringList.Create;
pgConnection1.GetTableNames(TableList,False);
+3
Qデータベース内のすべてのテーブルではなく、クエリに関係するテーブルについてのQ。 – Abelisto
+1
はい、私はより慎重に質問を読む必要があります。私が思ったより複雑なもの。私がチャンスを取ったときに貢献しようとしています。 – becsystems
+0
このコードは質問に答えるかもしれませんが、問題を解決する理由/方法を説明してください。 – BDL
関連する問題
- 1. ストアドプロシージャで使用されるすべてのデータベースのテーブルのリスト
- 2. PostgreSQL - すべてのテーブルの階層リスト
- 3. サポートされているすべてのダイジェストアルゴリズムのリストを取得
- 4. インストールされているすべてのアプリケーションのリストを取得
- 5. WebApi 2.0 OData、クエリで使用されるSQLテーブルのリストを取得
- 6. sqlを使用してデータベース内のすべてのテーブルからすべてのユニークインデックスを取得するクエリ
- 7. Microsoft Azureのすべてのテーブルのリストを取得する
- 8. アクティビティで使用されるすべてのStringリソースを取得
- 9. MySqlテーブルのすべてのCREATEステートメントを取得するクエリ
- 10. Postgresqlのクエリで、複数のテーブルを使用して年内の月数を取得する
- 11. SQLクエリを使用してすべてのMagentoカテゴリを取得
- 12. ReportServerデータベースからすべてのテーブルのリストを取得する
- 13. リストを使用してクエリでSELECTカラムを定義する
- 14. VB.NET - SELECTクエリを使用してテーブルの最初のIDを取得することができません
- 15. ストアドプロシージャで使用されているテーブルを照会するクエリ
- 16. Blackberryにインストールされているすべてのアプリケーションのリストを取得
- 17. テーブル内のすべての「参照」カラムを返すPostgreSQLクエリ
- 18. サーバ上で使用されているポートのリストを取得する方法
- 19. SQLRPGLEで使用されているUDTFのリストを取得する方法
- 20. 同じテーブル名のInsertクエリ内でselectクエリを使用する
- 21. SQL Serverでテーブルが使用されているストアドプロシージャをすべて取得する
- 22. Linq:DataContext内のすべてのテーブルのリストを取得
- 23. springのSimpleJdbcTemplateからすべてのテーブル名のリストを取得
- 24. PostgreSQLでビュー/テーブルが依存するテーブルのリストを取得する
- 25. dboスキーマを使用してデータベース内のすべてのテーブルのリストを取得する方法は?
- 26. SELECT INTOクエリを使用してMEMORY_OPTIMIZEDテーブルを作成する
- 27. Pythonを使用してクエリ内のすべてのファイルを取得する
- 28. すべての開いているMDIウィンドウのリストを取得
- 29. すべてのチェックされた値のリストを取得
- 30. PouchDB Typescriptを使用してすべてのデータベースのリストを取得する
?単純な結合の場合、JDBCドライバは 'ResultSetMetaData.getTableName(int) 'を介してその情報を返します。 –