将PostgreSQL备份和恢复操作完成

简而言之

因为有时需要复制Postgres的数据,所以先留下备忘录。

垃圾车 (lā jī chē)

为了删除不再需要的textsearch_ja等扩展功能,本次决定将数据库结构和数据分别转储。

# スキーマ(構造)
$ pg_dump -U hoge_admin -h 127.0.0.1 -s -p 5432 --create hoge_db > ~/schema.sql

# データ出力
$ pg_dump -U hoge_admin -h 127.0.0.1 -a -p 5432 hoge_db > ~/data.sql

文件传输

请使用以下命令将转储文件传输到目标服务器。

$ scp ~/schema.sql hoge@[IPアドレス(転送先)]:/home/hoge/

恢复

使用以下命令进行恢复。

# 構造作成
$ psql -U hoge_admin -h 127.0.0.1 -d postgres -f schema.sql

# データ登録
$ psql -U hoge_admin -h 127.0.0.1 hoge_db < data.sql

确认数量

我們來確認一下各個表的記錄數量。

SELECT
    t2.relname,
    t2.reltuples
FROM
    pg_stat_user_tables AS t1
INNER JOIN
    pg_class AS t2 ON t1.relname = t2.relname
ORDER BY
    t2.relname
;

查看以下文章时,与实际表格的记录数相比,数量不同…

当想要在PostgreSQL中查看每个数据表的记录数量时,

ひとつ注意すべき点は、reltuplesが
Number of rows in the table. This is only an estimate used by the planner. It is updated by VACUUM, ANALYZE, and a few DDL commands such as CREATE INDEX
つまり、「だいたいの数値であって正しいとは限らないぜ」ってトコ。

看来用这个无法确认转储是否正常进行,有没有其他好的方法呢…

<方法1>
select count(*) from table_name;

<方法2>
select relname as name, reltuples as rows from pg_class where relname ='table_name'

※1と2で件数が異なる場合は、反映されていない状態なので、
「vacuum table_name」で反映させる。

原来如此,使用真空吸尘器就可以适应数量了吗…

vacuum survey_responses

或者,可以使用以下SQL语句生成查询以获取每个表的记录数。

SELECT
  ARRAY_TO_STRING(
    ARRAY(
      SELECT
        ('SELECT ''' || relname || ''' AS table, COUNT(*) AS rows FROM ' || relname) AS query
      FROM
        pg_stat_user_tables
      ORDER BY
        relname ASC
    )
  , chr(10) ||' UNION ' || chr(10))
  || chr(10) || ';'
;

上述查询的执行结果

SELECT 'hoge1' AS table, COUNT(*) AS rows FROM hoge1
 UNION 
SELECT 'hoge2' AS table, COUNT(*) AS rows FROM hoge2
 UNION 
SELECT 'hoge3' AS table, COUNT(*) AS rows FROM hoge3
 UNION 
SELECT 'hoge4' AS table, COUNT(*) AS rows FROM hoge4
 UNION 
SELECT 'hoge5' AS table, COUNT(*) AS rows FROM hoge5
 UNION 
SELECT 'hoge6' AS table, COUNT(*) AS rows FROM hoge6
;

如果你尝试复制粘贴执行这个,似乎可以进行比较。

以上。 .)

请参考以下网站

    • PostgresSQLでDBの全テーブルのレコード数一覧を確認

 

    SCPコマンドでローカルのファイルをサーバにアップ&サーバ上のファイルをDL
bannerAds