如何从命令行重新索引Postgres 9.1.3

时间:2015-07-01 14:27:28

标签: postgresql postgresql-9.1 reindex

我在我管理的Postgres数据库中的一些表上有一系列删除和更新。有人建议在一系列删除后安排一个重新索引作为10分钟下一步更新的解决方案,无限制地冻结(因为它是随机的。)DOS指令提供了这个:

Usage:
  reindexdb [OPTION]... [DBNAME]

Options:
  -a, --all                 reindex all databases
  -d, --dbname=DBNAME       database to reindex
  -e, --echo                show the commands being sent to the server
  -i, --index=INDEX         recreate specific index only
  -q, --quiet               don't write any messages
  -s, --system              reindex system catalogs
  -t, --table=TABLE         reindex specific table only
  --help                    show this help, then exit
  --version                 output version information, then exit

Connection options:
  -h, --host=HOSTNAME       database server host or socket directory
  -p, --port=PORT           database server port
  -U, --username=USERNAME   user name to connect as
  -w, --no-password         never prompt for password
  -W, --password            force password prompt

我们必须使用版本9.1.3,因为这是公司标准。  我已经尝试了我能想到的每一个选项,但它不会接受重新索引的命令:

reindexdb.exe -U username=MyUserName -W MyPassword -t table=MyDatabase.MyTable

我也试过

reindexdb.exe -U MyUserName -W MyPassword -t MyDatabase.MyTable

reindexdb.exe -U MyUserName -W MyPassword -t MyTable -d MyDatabase

......但他们都以错误结束:

reindexdb: too many command-line arguments (first is "-t")

是否有人有一个能够澄清正确语法的工作样本?

3 个答案:

答案 0 :(得分:5)

从你的参数中删除MyPassword,并在Postgres提示你输入时输入它。

-W只会导致Postgres提示输入密码;它不接受密码本身。您不应该在命令行上指定密码,因为它通常是记录的。

如果您需要以非交互方式运行,请设置PGPASSWORD environment variable或创建pgpass file

答案 1 :(得分:0)

这样做了:

reindexdb.exe -d MyDatabase -U postgres -t MyTable

@Colonel Thirty Two和@Erwin Brandstetter指出,通过%APPDATA%\ postgresql \ pgpass.conf可以完全删除密码

答案 2 :(得分:0)

可以通过在命令

之后添加关键字FORCE来强制执行这些操作

重新创建一个索引myindex:

REINDEX INDEX myindex

重新创建表格中的所有索引,mytable:

REINDEX TABLE mytable

重新构建schema public中的所有索引:

REINDEX SCHEMA public

重新创建数据库postgres中的所有索引:

REINDEX DATABASE postgres

重新创建数据库postgres中系统目录的所有索引:

REINDEX SYSTEM postgres

link