如何避免 `pg_dump` 自动添加 `public.` 前缀?
时间: 2024-09-21 09:08:54 浏览: 27
在使用 `pg_dump` 时,要避免它在导出的创建表语句中自动添加 `public.` 前缀,你可以按照以下步骤操作:
1. **明确指定schema**: 当创建表时,在 `CREATE TABLE` 语句中直接指定表所在的schema名称,而不是让它默认在 `public` 中。例如:
```sql
CREATE TABLE my_schema.my_table (...);
```
2. **使用-p或--no-password选项**:在运行 `pg_dump` 命令时,如果表属于非 `public` schema,需要指定连接到对应schema的用户,如:
```bash
pg_dump -h hostname -U myuser -S my_schema -b -v mydatabase > my_backup.sql
```
其中 `-S` 参数是用于指定schema名字的。
3. **使用-t或--table选项**: 如果你想导出单个表而不包括其默认所属的schema,可以使用 `-t` 或 `--table` 参数,然后提供完整的表名(包括schema):
```bash
pg_dump -h hostname -U myuser -t my_schema.my_table mydatabase > my_backup.sql
```
4. **忽略公共schema**: 如果你不希望导出所有schema,可以在 `pg_dump` 的参数中使用 `--exclude-table-public` 来排除 `public` 中的表,但这可能会删除一些预期的数据。
请注意,每个选项的具体用法可能因版本而异,所以建议查看官方文档以确认最新的语法。