FC2ブログ

    nEST's SPACE-Blog

    コンピュータ、旅行などがテーマの日記帳です

    PostgreSQLのCOPYコマンドでファイルから直接テーブルに書き込んでみる

     
    PostgreSQLでは、COPYコマンドを使用する事でCSVファイルなどの中身を直接テーブルに書き込む事ができる。
    百万件とか超えてもサクサク動き、テストデータ作成に重宝するので備忘録作っておく。

    なお環境はCentOS6.6+PostgreSQL8.4.22。もうちょっと新しいバージョンにしたいなあ。

    COPYコマンド実行の流れ


    最初にコマンド「\d [テーブル名]」で、書き込みたいテーブルのカラム構成を確認する。
    su - postgres
    psql TEST_DB
    TEST_DB=# \d TEST_TABLE
    カラム(当サンプルではカラム名以外の項目は省略した)
    ---------------------------------------------------------
     id
     gb_name
     state_name
     device_number

    ※カラム:idはデフォルト値=not null デフォルト nextval('TEST_TABLE_id_seq'::regclass))で、自動計算値が入る。
    その他のカラムはデフォルト値=null。

    次に、COPYコマンドで取込むファイル(今回はCSV)を用意する。"/tmp/COPY_TEST.csv"として配置した。
    なおカラム:idは自動計算値としたいので、CSVファイルには記載しない。
    CSVファイルサンプル.
    gb_name,state_name,device_number
    JAPAN,TOKYO,10000
    JAPAN,TOKYO,20000
    JAPAN,TOKYO,30000

    最後にCOPYコマンドを実行すると、指定したファイルの中身をテーブルに書き込む事が出来る。
    下記サンプルは、指定したファイルの構成とテーブルのカラム構成が一致しない場合の内容。
    テーブル:TEST_TABLEの"id"はCSVファイルに存在しないため、"COPY TEST_TABLE~"の後にカラム名をきちんと書かないと構成不一致とみなされ動作しない。
    su - postgres
    psql TEST_DB
    COPY TEST_TABLE (gb_name , state_name , device_number) FROM '/tmp/COPY_TEST.csv' with CSV;

    ※ファイルは絶対パスで指定する事。またCSVファイルなので、"with CSV"の記述が無いと動作しない。

    なお"COPY TEST_TABLE~"の後のカラム名を省略した場合、指定したファイルの内容を全てテーブルに書き込む。
    指定したファイルの構成と、テーブルのカラム構成が完全に一致している場合はCOPYコマンドのカラム名を省略してOK、という事。

    参考.
    PostgreSQL 9.3.2文書
     
     
     
    関連記事
    スポンサーサイト

    テーマ:データベース - ジャンル:コンピュータ

    1. 2018/03/10(土) 21:45:47|
    2. PostgreSQL
    3. | トラックバック:0
    4. | コメント:0
    <<DAHON ダッシュアルテナ(2018イエロー)よこんにちは | ホーム | ホライズ×MR4R=ダッシュアルテナ?>>

    コメント

    コメントの投稿


    管理者にだけ表示を許可する

    トラックバック

    トラックバック URL
    http://nestblog.blog.fc2.com/tb.php/190-8b7d04ea
    この記事にトラックバックする(FC2ブログユーザー)

    プロフィール

    管理人NEST

    Author:管理人NEST
    nEST's SPACEへようこそ。
    書きたい事を適当に書き連ねています。
    HP
    自転車ブログ nEST's SPACE-Bicycleもよろしく。

    最新記事

    最新コメント

    最新トラックバック

    月別アーカイブ

    カテゴリ

    未分類 (1)
    GAME (20)
    雑記 (57)
    PostgreSQL (7)
    Windows (45)
    サイト運営 (6)
    MANGA (1)
    スマートフォン (19)
    Oracle (6)
    健康 (2)
    Linux (21)
    仮想化 (4)
    車 (7)
    自転車旅行 (3)
    自転車パーツ・ウェア (2)
    自転車イベント (5)
    自転車 (15)

    ブログ用カウンター

    検索フォーム

    RSSリンクの表示

    リンク

    このブログをリンクに追加する

    Powered By FC2ブログ

    今すぐブログを作ろう!

    Powered By FC2ブログ