2016-10-21 11 views
0

私はすべてが同じ列を持っているが、異なる順序で複数のテーブルを持っています。私はすべて一緒にそれらをマージしたい。私は標準の列を持つ空のテーブルを、私が望む順序で作成しました。私はpostgresqlで同じ列を持つが、順序が異なる複数の表を結合するには?

insert into master_table select * from table1; 

に挿入しようとしたが、それはので、異なる列順では動作しません - 値の一部が間違った列に終わります。私の空のマスターテーブルで指定された順序ですべてのテーブルを作成する最善の方法は何ですか?あなたは二posiition上の3分野をしたい場合は

答えて

0

は、だけではなく、

select * 

の選択

で適切な順序を示しています。

select field1, field3, field2 

か、あなたは多くの列と多くのテーブルを扱っている場合は、列を取得するためにINFORMATION_SCHEMAを使用することができます

INSERT INTO master_table (field1, field3, field2) 
    SELECT * 
+0

おかげで、おそらく、動作していないようでした私の一部に何らかのエラーがありましたが、もう一度試してみましょう – kflaw

2

sintaxis INSERTを使用することができます。あなたがから挿入し、plpgsqlが手順でこれを実行するすべてのテーブルをループし、変数でTABLE1を交換することができます。私はこの先にしようとした返信用

EXECUTE (
SELECT 
'insert into master_table 
    (' || string_agg(quote_ident(column_name), ',') || ') 
SELECT ' || string_agg('p.' || quote_ident(column_name), ',') || ' 
FROM table1 p ' 
FROM information_schema.columns raw 
WHERE table_name = 'master_table'); 
+0

良いですが、どこかに閉じ括弧 ')'があるようです。 [まだ数えて...] – joop

+1

あなたは正しいです - 最後に実行()、編集済みの回答 –

+0

もinfo_schemaテーブルの文字列値であるため 'master_table'の周りに引用符が追加されました –

関連する問題