\

PythonとPsycopgを用いて、PostgreSQLのCOPYコマンドを実行する方法について説明します。この記事は、Python 2.7.10とPostgreSQL 9.4を使用しています。

まず、必要なライブラリであるPsycopgをインストールします。インストールはPIPコマンドでも可能です。

次に、以下のサンプルソースコードを参考にしてください。

import psycopg2
try:
    # PostgreSQLへ接続
    conn = psycopg2.connect("dbname='データベース名' user='ログインユーザ名' host='ホスト名' password='****'")
    cur = conn.cursor()
    conn.set_isolation_level(0)
    #データベースに投入するファイルの読み込み
    f = open('/ファイルパス/ファイル名', mode='r', encoding='utf-8')
    #文字コードを明示するとCOPY時のエラーが抑制出来ます。
    #COPYの実行
    cur.copy_from(f, 'テーブル名', sep='\\t', null='\\\\N',columns=('カラム名1','カラム名2'))
    # sep='デリミッタ文字種:例ではTAB記号'
    # null='ヌル文字種:例ではNULL'
    #\u3000\u3000columns=('') 入力対象のカラム名を順番に列挙、全カラムに投入を可能な場合は省略可能
    conn.commit() #忘れずに!
    f.close()
    print("OK")
except psycopg2.Error as e:
    print("NG Copy error!")
    print(e.pgerror)

このコードは、TSV形式のファイルをPostgreSQLに投入します。copy_from関数の第一引数は、ファイルまたはファイルのようなオブジェクトで、read()readline()の両方が存在していなければなりません。サンプルコードでは、TSVファイルをopen()関数で読み込んだ戻り値を渡しています。

以上がPythonとPsycopgを用いて、PostgreSQLのCOPYコマンドを実行する方法になります。この情報が役立つことを願っています。.

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です