2016-07-27 13 views
0

私はPostgreSQLデータベースを持っています。既存の大きなテーブルをいくつかの列で拡張する必要がありました。PostgreSQL:テーブルにカラムをインポートし、一致するキー/ ID

これらの列を入力する必要があります。私は、既存の行のID /主キーと新しい空のフィールドのデータを含む.csvファイル(Excel/Calcの外)を作成することができます。それは可能ですか?それがあれば、どのように?

私はMicrosoft SQL Management Serverを使用してこの作業を非常に簡単に行うことを覚えていますが、PostgreSQLの場合はPG Adminを使用しています(ただし、役に立つと思ったらツールを切り替えてください)。私はPostgreSQLのCOPY機能を使用するPG Adminのインポート機能を試してみましたが、COPYは適切ではないようです。

編集:私はcsvを読み込んで、UPDATEを使って行を反復するスクリプトを書くことができたと思います。しかし、私は車輪を再構築したくありません。

Edit2:this question here on SOは、テンポラリテーブルを使用して回答を得ています。私はそれを使用すると思いますが、それは実際の解決策よりも回避策です。

+0

はいこれは可能です。 – e4c5

+0

こんにちは、ありがとう。多分あなたは私にどのように教えることができましたか? –

+0

あなたは尋ねなかった。 COPY – e4c5

答えて

1

PostgreSQLは、COPYステートメントを使用してCSVファイルから直接データをインポートできますが、これは指定したとおり、新しい行に対してのみ機能します。

CSVファイルを作成する代わりに、必要なSQL UPDATE文を生成するだけで済みます。

これはCSVが

PK;ExtraCol1;ExtraCol2 
1;"foo",42 
4;"bar",21 

を提出されるだろう(それからちょうど次

UPDATE my_table SET ExtraCol1 = 'foo', ExtraCol2 = 42 WHERE PK = 1; 
UPDATE my_table SET ExtraCol1 = 'bar', ExtraCol2 = 21 WHERE PK = 4; 

を作るあなたはWindowsで動作するようには思えたので、私は実際にそこにこれを実現する方法がわからないと仮定おそらくPowerShellで)、Unixではawksedのようなツールで簡単にCSVからSQLを生成することができます。正規表現をサポートするエディタでも十分でしょう。

関連する問題