> echo "\\d" | psql -U postgres dbname 2>&1 |tee -a a.logこの状態では余分な文字が含まれてるが気にしない。
> awk -F ' ' '{print $3}' a.log |grep -v '_seq' 2>&1 |tee -a tablelist.logとやって、テーブル名だけの一覧を作る。が、前後に余分な文字が入るのでそれはtablelist.logを修正し、省く。
> vi select.plこれを実行。
#!/usr/bin/perl
while( chomp($line=<>) )
{
$tablename = $line;
print "select count(*) as $tablename from $tablename;\n";
}
> perl select.pl tablelist.log > command.txtSQLを実行し、ログに書く最後にSQLをcommand.txtから実行。
psql -U postgres -f command.txt dbname > count.logこれでcount.logにそれぞれのテーブルのレコード数が取れるので新旧データベースでズレが無いか確認。
http://kapi.jp/kapi_blog/205
2009年01月15日
関連カテゴリ サンプルコード