人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PostgreSQLで、テキストファイルを一括してインポートする方法は分かるのですが、一括してアップデート(UPDATE)する最も簡単な方法は何でしょうか?

○テーブルX
A列 B列 C列 D列
1 2 3 4
10 20 30 40

※A列を主キーとする


○テキストファイル
A列 C列
1 555
10 888

○テキストファイル反映後のテーブルX
A列 B列 C列 D列
1 2 555 4
10 20 888 40


テキストファイルをテーブルXに反映するとした場合、普通にインポートするとINSERT扱いとなってしまうと思うのですが、これをUPDATEする方法と言うのはあるのでしょうか?

最悪、プログラムで1件1件UPDATE文を実行してもよいのですが、もっと賢い方法があれば教えてください。

●質問者: katsube
●カテゴリ:インターネット ウェブ制作
✍キーワード:555 postgreSQL アップデート インポート テキスト
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● tadashi0805
●35ポイント

MySQLですと、PostgreSQLのインポートで使うCOPYコマンドに相当する、LOAD DATAコマンドに、該当する機能はあるようですが、PostgreSQLでは見当たりませんね。

となると、テキストファイルの各行をUPDATEクエリに変換するスクリプトを作り、それを食わせて、一括処理を行うのが手っ取り早いと思います。

◎質問者からの返答

やはりその方法しか無いですか(^^;

ありがとうございました!

※念のためもうちょっとだけ受け付けておきます。


2 ● saphil
●10ポイント

一括アップデート(UPDATE)の便利なツールは無いように思います。

コマンドラインPHPで、サクッ、と作成されてはどうでしょうか。

期待はずれの回答で、済みません。


3 ● birdie-brain
●35ポイント

まずテーブルXとは別に、A列(主キー)、C列を持つテーブルYを作成し、そこにテキストファイルをインポートします。

次に以下のSQLクエリを実行し、テーブルXのC列をテーブルYのC列の値に変更します。

UPDATE ONLY X

SET

C = Y.C

FROM

X

INNER JOIN Y ON X.A = Y.A

この方法だと、データ量が増えても手間が変わらないのと、1行ずつUPDATEするよりも実行時間が短くて済むのが利点です。

◎質問者からの返答

まだ試してませんが、こんな方法があるんですねぇ。次回の改修を行う際に導入したいと思います。

ありがとうございました!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ