sql >> データベース >  >> RDS >> PostgreSQL

COPYコマンド:csvから特定の列のみをコピーします

    CSVファイルを前処理するか、(おそらく私が行うことですが)ターゲットテーブルの一時コピーにインポートしてINSERT 2番目のステップで選択した列のみ:

    CREATE TEMP TABLE tmp AS SELECT * FROM target_table LIMIT 0;
    ALTER TABLE tmp ADD COLUMN etra_column1 text
                 ,  ADD COLUMN etra_column2 text;  -- add excess columns
    COPY tmp FROM '/path/tp/file.csv';
    
    INSERT INTO target_table (col1, col2, col3)
    SELECT col1, col2, col3 FROM tmp  -- only reelvant columns
    WHERE  ...  -- optional, to also filter rows
    

    一時テーブルは、セッションの終了時に自動的に削除されます。処理に時間がかかる場合は、通常のテーブルを使用してください。



    1. ワイルドカードとして扱われずにLIKEでパーセント(%)を使用するにはどうすればよいですか?

    2. 配列をループしてデータベースに挿入する方法

    3. テーブルからn個の最大値を選択します

    4. 3つのテーブルを持つ複雑なIFステートメント