pg_dump导出的create语句如何排除public.
时间: 2024-09-21 08:08:46 浏览: 34
`pg_dump`是PostgreSQL数据库的一个实用工具,用于备份数据库到文件。默认情况下,它会包含`public`模式下的所有表、函数等。如果你想要从导出的创建语句中排除`public`模式的内容,你需要在命令行中添加选项来指定这个过滤条件。
当你运行`pg_dump`时,可以加上`--no-public`或`--exclude-table=public.*`这样的选项。例如:
```bash
pg_dump -U your_username -F c -b -v --no-public your_database_name > backup.sql
```
这里:
- `-U your_username`: 指定用户名
- `-F c`: 表示生成SQL的压缩版本 (`.gz`)
- `-b`: 只包含数据,不包括模式信息
- `-v`: 显示详细输出
- `--no-public`: 阻止公共模式的数据被导出
这样导出的`backup.sql`文件就不会包含`public`模式下的内容了。如果你只想排除特定模式下的一部分对象,可以用`--exclude-table=模式名.*`替换`--no-public`。
相关问题
如何避免 `pg_dump` 自动添加 `public.` 前缀?
在使用 `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` 中的表,但这可能会删除一些预期的数据。
请注意,每个选项的具体用法可能因版本而异,所以建议查看官方文档以确认最新的语法。
阅读全文