PostgreSQLのテーブルのカラムを他のTABLEにうつしたいときに使ったもの。

pgAdminIIIで既存テーブル見て、次のようなカラムを他のテーブルにうつしたいなーと思いました。


  a smallint,
  b smallint,
  c real,

まぁ3つくらいなら手でやってもいいですが、10超えてくると面倒…。

で、次のようなAWKスクリプトファイル(ここではtest.awk)を用意。


{
# 行頭のスペースとタブ削除
sub(/^[ \t]+/, "", $0);
# カンマ削除
sub(/,/, "", $0);
# SQL文追加して出力
print "ALTER TABLE testtable ADD "$0";";
}

これで


awk -f test.awk test.txt > test2.txt

とすれば、


ALTER TABLE testtable ADD a smallint;
ALTER TABLE testtable ADD b smallint;
ALTER TABLE testtable ADD c real;

となってめでたしめでたし。

【備忘録】AWKでSQL生成 その2