postgresql导入导出一张表

本文详细介绍了如何使用pg_dump进行PostgreSQL数据库的备份,包括参数解释如-h(主机)、-p(端口)、-U(用户名)等,并提供了示例命令。同时,也简单说明了数据导入的步骤,使用psql命令完成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

导出表格

使用pg_dump,需要安装有postgresql,如果安装的是docker的话需要进入到docker内执行

pg_dump -U postgres -h 127.0.0.1 -p 5432 -c -Fp -t  public.mytable -E UTF-8 -f /home/mytable_20210415.sql mydatabase

这里面的参数:

  • -h host,指定数据库主机名,或者IP
  • -p port,指定端口号
  • -U user,指定连接使用的用户名
  • -W,按提示输入密码
  • dbname,指定连接的数据库名称,实际上也是要备份的数据库名称。
  • -a,–data-only,只导出数据,不导出表结构
  • -c,–clean,是否生成清理该数据库对象的语句,比如drop table
  • -C,–create,是否输出一条创建数据库语句
  • -f file,–file=file,输出到指定文件中
  • -n schema,–schema=schema,只转存匹配schema的模式内容
  • -N schema,–exclude-schema=schema,不转存匹配schema的模式内容
  • -O,–no-owner,不设置导出对象的所有权
  • -s,–schema-only,只导致对象定义模式,不导出数据
  • -t table,–table=table,只转存匹配到的表,视图,序列,可以使用多个-t匹配多个表
  • -T table,–exclude-table=table,不转存匹配到的表。
  • -inserts,使用insert命令形式导出数据,这种方式比默认的copy方式慢很多,但是可用于将数据导入到非PostgreSQL数据库。
  • -column-inserts,导出的数据,有显式列名

参考:传送门

导入表格

导入表格就简单多了:

psql -U postgres -W mydatabase -h 127.0.0.1 -p 5432 < /home/mytable_20210415.sql 
### PostgreSQL 空间使用指南 #### 创建空间 创建一个新的空间涉及指定操作系统上的目录位置,在该位置上将存储属于此空间的对象的数据文件。为了创建一个新空间,用户需要有`CREATEROLE`权限,并且通常还需要对目标文件夹具有写入访问权。 ```sql CREATE TABLESPACE my_tablespace LOCATION '/path/to/directory'; ``` 上述命令会创建名为 `my_tablespace` 的空间,并将其物理位置设置为 `/path/to/directory`[^1]。 #### 查看现有空间 要查看当前数据库实例中存在的所有空间及其属性,可以执行如下 SQL 查询: ```sql SELECT spcname AS "Name", pg_catalog.pg_get_userbyid(spcowner) AS "Owner", pg_size_pretty(pg_tablespace_size(oid)) AS "Size" FROM pg_tablespace; ``` 这段代码返回了一个格形式的结果集,其中包含了各个空间的名字、拥有者以及大小信息。 #### 设置默认空间 当创建新的数据库对象(如或索引)而未显式指明它们应位于哪个空间时,默认情况下这些对象会被放置到系统的默认空间中。可以通过更改配置参数 `default_tablespace` 来改变这一行为: ```sql SET default_tablespace TO 'new_tablespace_name'; ``` 这行指令临时改变了会话级别的默认空间设定;如果希望永久生效,则需编辑postgresql.conf 文件中的相应选项。 #### 更改已有对象所属的空间 目前,PostgreSQL 并不允许直接通过SQL语句修改已存在对象所处的空间。不过,有一种间接的方法是重建受影响的对象——先删除旧版本再重新创建指向所需的新空间内的结构体。例如,对于一张特定的来说,可能的操作流程包括导出数据、下线原、建立新于期望的目标空间内最后导入之前保存下来的内容。 #### 删除不再需要的空间 一旦确认没有任何活动对象关联着某个给定的空间之后,就可以安全地移除它了。注意在此之前应当确保已经迁移走了所有的相关内容以免造成不必要的损失。 ```sql DROP TABLESPACE IF EXISTS old_tablespace CASCADE; ``` 这条命令尝试销毁名称匹配 `old_tablespace` 的任何存在的空间实体,并自动清理掉依附于此资源的一切附属项(比如依赖它的其他组件)。请注意这里的 `CASCADE` 关键字意味着级联删除动作将会被执行,即连带清除那些仅因为被这个即将消失的空间支撑才得以维持的存在物们。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值