2017-09-05 12 views
1

という新しい空の列を持つusers_userと呼ばれるpostgresテーブルがあります。新しい列をCSVファイルのデータで更新する

今私は、各ユーザーに1つずつ、420のuuidsを持つcsvファイルを持っています。

uuids.csv

e0af0a31-3eb3-43d5-9d3d-xxx 
e0af0a31-3eb3-43d5-9d3d-yyy 
e0af0a31-3eb3-43d5-9d3d-zzz 
.... 

、この表を更新する方法は、具体的にそのファイルからユーザごとに新しいUUIDを追加している私の質問?私は各行に対して1つの手動アップデートを避けたい。

答えて

1

UUID値のCSVファイルをインポートして、各行にusers_userテーブルの主キーと一致する一意の識別子を割り当て、次に結合されたインポートテーブルからusers_userを更新する必要があります。

これを行うには1つの方法があります。

インポートされたファイル - インポートされたファイルの名前がimported_uuidsで、UUID値を含む列の名前がuuidであるとします。

users_userテーブルに一時シーケンス列を追加します。

alter table users_user 
add column seq bigint; 

update users_user as a 
set seq = rn 
from (select user_key_column, row_number() over() as rn from users_user) as x 
where x.user_key_column=a.user_key_column; 

輸入UUID値にseq値の同様のセットを割り当て、アップデートを実行します。

​​

をクリーンアップします。

alter table users_user 
drop column seq; 

あなたusers_userテーブルがすでに隙間なく数値の1に基づく配列を含む列を持っている場合は、代わりにこの図に行われるようseq列を追加することを使用することができます。

+0

これは複雑に思えます。私はすべてのusers_idをエクスポートし、次にExcelで連結して各ユーザーの更新クエリを作成すると思います。 – anvd

+0

また、拡張機能をインストールできるようにPostgresのインストールを管理している場合は、 'uuid_ossp'と' pgcrypto'の両方にPostgres内でUUIDを生成する関数が含まれています。 1つのUPDATEステートメントでそれらを使用することができます。 –

+0

はい私は持っています。 uuid_osspで1つのコマンドを使って、どうすればいいですか? – anvd

関連する問題