こんにちわ。
めっきり忙しくて三日坊主属性が顔をのぞかせてきた今日この頃いかがお過ごしでしょうか。
hstoreのテストで適当な文字列データがほしいわーって思ってちょっとそんなクエリを作ってみました。
数字はrandom()でいいかもなんですけど、なんとなく文字列でほしいなーと思って。
もっとスマートなやり方求む!って感じです!
仮にこんなテーブルがあったとして。
hstoreのテスト用だったので、データの形式は堪忍したってください。
testdb=# \d+ tbl1 テーブル "public.tbl1" カラム | 型 | 修飾語 | ストレージ | 説明 --------+---------+---------------------------------------------------+------------+------ id | integer | not null default nextval('tbl1_id_seq'::regclass) | plain | data | hstore | | extended | インデックス: "tbl1_pkey" PRIMARY KEY, btree (id) OID を持つ: no testdb=#
で、
INSERT INTO tbl1 (data) VALUES ( ARRAY[ ARRAY[ 'uniq_id',( SELECT ARRAY_TO_STRING( ARRAY( SELECT unnest( ARRAY['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','1','2','3','4','5','6','7','8','9','0'] ) ORDER BY random() LIMIT 10 ),'' ) ) ], ARRAY['rand_num',random()::text] ]::hstore );
みっづっらーーい!ホントに!ごめん!
ほとんど要点はここのみで。
SELECT ARRAY_TO_STRING( ARRAY( SELECT unnest( ARRAY['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','1','2','3','4','5','6','7','8','9','0'] ) ORDER BY random() LIMIT 10 ),'' )
配列化した文字群をランダムかけて文字列にするっちゅー感じです。
なんとなくgenerate_series()らへん使うといい感じにできるのかなーって思ったり。
僕はbashでpsql -c で↑のクエリをwhileで投げまわしましたが。
取り急ぎ。
P.S いい加減ライブドアwiki記法を覚えたい…なんかうまくいかないんだよね…
create table blogでグーグル検索したら、3位と4位に出てきたんですもの。
テストデータの作成ですね。何気に苦労するんですよね。