データベースの一覧は -l コマンドで表示される。
C:\gis>psql -U postgres -l接続後では \l コマンドとなる。
C:\gis>psql -U postgres postgres=# \l
\l+ とすると、データベースのサイズなど詳細が表示される。出力の一部を下に示す。
osm | postgres | UTF8 | Japanese_Japan.932 | Japanese_Japan.932 | | 13 MB | pg_default | postgres | postgres | UTF8 | Japanese_Japan.932 | Japanese_Japan.932 | | 5891 MB | pg_default | default administrative connection database
"今回、pg_dump で PostgreSQL on Ubuntu からダンプした osm.dump を psql で PostgreSQL on Windows に取り込んだところ、 異常があったので、\l+ を実行したところ、この結果で異常が判明した。 データベース osm にインポートされるべきものが、データベース postgres にインポートされている。
平文形式でダンプしたり、アーカイブ形式でダンプしたりあれこれ試行したので、 最初の操作は正しいが、後の操作を間違えたのかも知れない。 あるいは、最初の平文形式のダンプ/リストアに誤りがあったのかも知れない。 いずれにせよ、じっくり学び直そう。"
テーブル一覧は \z、テーブル定義は \d である。
postgres=# \z postgres=# \d raster_columns
データベース osm のテーブル一覧を表示する
c:\gis\osm>psql -U postgres osm osm=# \z スキーマ | 名前 | 型 | アクセス権 | Column privileges | Policies ----------+--------------------+----------+---------------------------+-------------------+---------- public | geography_columns | ビュー | postgres=arwdDxt/postgres+| | | | | =r/postgres | | public | geometry_columns | ビュー | postgres=arwdDxt/postgres+| | | | | =r/postgres | | public | planet_osm_line | テーブル | postgres=arwdDxt/postgres+| | | | | =r/postgres | | public | planet_osm_point | テーブル | postgres=arwdDxt/postgres+| | | | | =r/postgres | | public | planet_osm_polygon | テーブル | postgres=arwdDxt/postgres+| | | | | =r/postgres | | public | planet_osm_roads | テーブル | postgres=arwdDxt/postgres+| | | | | =r/postgres | | public | raster_columns | ビュー | postgres=arwdDxt/postgres+| | | | | =r/postgres | | public | raster_overviews | ビュー | postgres=arwdDxt/postgres+| | | | | =r/postgres | | public | spatial_ref_sys | テーブル | postgres=arwdDxt/postgres+| | | | | =r/postgres | | (9 行)
テーブル planet_osm_polygon の定義を表示する
osm=# \d planet_osm_polygon テーブル "public.planet_osm_polygon" 列 | 型 | 修飾語 --------------------+---------------------------+-------- osm_id | bigint | access | text | [中略] z_order | integer | way_area | real | abandoned:aeroway | text | abandoned:amenity | text | abandoned:building | text | abandoned:landuse | text | abandoned:power | text | area:highway | text | way | geometry(Geometry,900913) | インデックス: "planet_osm_polygon_index" gist (way) WITH (fillfactor='100')
次のsqlでテーブル、インデックスのサイズが確認できる[1]。
select objectname, to_char(pg_relation_size(objectname::regclass), '999,999,999,999') as bytes from ( select tablename as objectname from pg_tables where schemaname = 'public' UNION select indexname as objectname from pg_indexes where schemaname = 'public' ) as objectlist order by bytes desc;
次の例は データベース osm のテーブル名一覧を CSV形式でファイル出力して終了する。 -t は行(tuples)のみ表示、-A は桁揃えなし、-F は桁揃えなしのときのフィールド区切り文字指定を意味する。
postgres@dell:~$ psql -d osm -c "\dt;" -t -A -F , > /media/sf_gisdata/tmp.csv
tmp.csv の内容を以下に示す。
public,my_osmattr,table,postgres public,my_osmdata,table,postgres public,my_osmdup,table,postgres public,planet_osm_line,table,postgres public,planet_osm_point,table,postgres public,planet_osm_polygon,table,postgres public,planet_osm_roads,table,postgres public,spatial_ref_sys,table,postgres
テーブル my_osmdup の存在の有無だけ知りたいときは次のようにする。あれば 1、なければ 0 が出力される。
$ psql -d osm -c "SELECT count(*) FROM information_schema.tables WHERE table_name = 'my_osmdup';" -t -A
postgres=# \q
hatada@hatada-VirtualBox:~$ cd /media/sf_osm hatada@hatada-VirtualBox:/media/sf_osm$ su - postgres パスワード: postgres@hatada-VirtualBox:/media/sf_osm$ psql -d osm -f ./update_database.sql
*.sqlファイルの文字コードは UTF-8 とする。
テーブル一覧の表示
$ psql -d osm osm=# \dt;
テーブルの表示
osm=# \d テーブル名;
インデックス削除
osm=# drop index インデックス名;
updateクエリなどを中断してゴミが残ったとき vacuum を実行する(PostgreSQL独自機能)。
osm=# vacuum (verbose) [ テーブル名 ] ;
psql終了
osm=# \q