如何使用psql执行*.sql文件

34

我创建了一个名为 index.sql 的文件,其中包含用于创建95个表索引的脚本。

例如

DROP INDEX IF EXISTS gtab03_vrctrlid_idx cascade;
CREATE UNIQUE INDEX gtab03_vrctrlid_idx ON gtab03 USING btree (vrctrlid);

我已经将所有表格的索引创建脚本整合到一个名为 index.sql 的文件中。 我需要一次性运行整个脚本,是否可能使用 psql 执行 index.sql 文件?


3
需要时请使用手册:http://www.postgresql.org/docs/current/static/app-psql.html - Frank Heikens
你可能希望考虑使用一个基于对information_schema的查询和EXECUTE format(...)循环的PL/PgSQL函数来动态执行这个操作,而不是手动编写所有语句。在dba.se上搜索示例。 - Craig Ringer
2个回答

53

这是您所指的吗?

\i e:/myFolder/index.sql;

不应包括分号,因为这是一个psql命令而不是SQL。 - Anthony Petrillo
这对我没用 - psql 中未知参数\i - Matt

40

以下脚本对我有效:

psql -U postgres -d mydb -a -f "D:\index.sql" -- Absolute path to .sql file

-U,-a,-f


8
显然...但为了社区的利益,最好让他们能够按照提供的命令行运行命令,而不必深入参考文献以检查这个非明显的标志是做什么用的。我看到你已经添加了它,干得好。 - vaughan
你也可以使用“管道”符号来执行,例如 psql -U postgres -d mydb < D:\index.sql - Matt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接