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

csvファイルのいくつかの列をテーブルにコピーします

    アドホックタスクの場合

    入力ファイルのすべての列を含む一時テーブルを作成します

    create temporary table t (x1 integer, ... , x10 text)
    

    ファイルからファイルにコピーします:

    copy t (x1, ... , x10)
    from '/path/to/my_file'
    with (format csv)
    

    次に、臨時雇用者から最終的なテーブルに挿入します:

    insert into my_table (x2, x5, x7, x10)
    select x2, x5, x7, x10
    from t
    

    そしてそれをドロップします:

    drop table t
    

    頻繁な作業の場合

    file_fdwを使用します 拡大。スーパーユーザーとして:

    create extension file_fdw;
    
    create server my_csv foreign data wrapper file_fdw;
    
    create foreign table my_csv (
        x1 integer,
        x2 text,
        x3 text
    ) server my_csv
    options (filename '/tmp/my_csv.csv', format 'csv' )
    ;
    

    テーブルを読むユーザーにテーブルの選択権限を付与します:

    grant select on table my_csv to the_read_user;
    

    次に、必要に応じて、テーブルであるかのようにcsvファイルから直接読み取ります。

    insert into my_table (x2)
    select x2
    from my_csv
    where x1 = 2
    


    1. Oracleでテーブル、ビュー、シノニムのすべてのインデックスとその列を検索する方法

    2. 東京のMariaDB

    3. PostgreSQL11でのパーティショニングの改善

    4. 実用的な例によるMySQLTRUNCATETABLEの理解