首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    PG备份恢复:multiple primary keys for table t1 are not allowed

    数据库导入导出是最常用的功能之一。PostgreSQL的备份工具可以使用pg_dump及pg_dumpall。可以通过pg_dump --help获取其使用方法。这里不对其做过多介绍。...主要介绍在使用pg_dump及恢复过程中遇到的一个问题。...pg_dump -U postgres -d yzs -Fa -c -C -f all.sql psql sql 3、问题分析 1)通过-c导出时在重建database前先drop 2)通过...-C导出时导出时导出create database语句 3)每次导入时,虽然库中已有导入的表结构和部分数据,及先执行drop database语句清空,应该不会出现表已存在等错误,但是这种错误确实出现了...4、解决方法 1)pg_dump导出时,没有选项使导出的语句中带if not exists,不能使之不存在时再创建或插入。 2)保证没有业务连接数据库时才导入,或向一个干净的数据库进行导入

    3.7K30

    PostgreSQL逻辑备份恢复–pg_dump导出及psql导入实例

    数据库导入导出是最常用的功能之一。PostgreSQL的备份工具可以使用pg_dump及pg_dumpall。可以通过pg_dump --help获取其使用方法。这里不对其做过多介绍。...主要介绍在使用pg_dump及恢复过程中遇到的一个问题。...pg_dump -U postgres -d yzs -Fa -c -C -f all.sql psql sql 3、问题分析 1)通过-c导出时在重建database前先drop 2)通过...-C导出时导出时导出create database语句 3)每次导入时,虽然库中已有导入的表结构和部分数据,及先执行drop database语句清空,应该不会出现表已存在等错误,但是这种错误确实出现了...4、解决方法 1)pg_dump导出时,没有选项使导出的语句中带if not exists,不能使之不存在时再创建或插入。 2)保证没有业务连接数据库时才导入,或向一个干净的数据库进行导入

    1.5K20

    PostgreSQL逻辑备份pg_dump使用及其原理解析

    (如果是并行dump,需要按表大小排序)、sortDumpableObjects把所有对象重新排列:不同类型对象导出优先级依赖于dbObjectTypePriority数组;相同类型按名称排序 static...“file”方式,但最后备份的所有文件都要归档到一个tar文件。...这样在pg_dump.c中只需要根据用户指定的文件格式的参数,就可以调用相应的处理函数。见第一部分的第3步。 概况的说,pg_dump导出的内容可以分为数据库对象的定义和数据。...通过调节导出顺序把数据库对象的定义导出然后导出数据,置于通过链表中对应数据对象节点的信息,执行相应的SQL语句,从表中读出数据然后导出写出去。...语句到test.sql中 [postgres@localhost ~]$ pg_dump --format=p yzs -f test.sql 3)以二进制格式输出 [postgres@localhost

    2.5K20

    PostgreSQL逻辑备份pg_dump使用及其原理浅析

    (如果是并行dump,需要按表大小排序)、sortDumpableObjects把所有对象重新排列:不同类型对象导出优先级依赖于dbObjectTypePriority数组;相同类型按名称排序  static...):文件备份基本类似“file”方式,但最后备份的所有文件都要归档到一个tar文件。...这样在pg_dump.c中只需要根据用户指定的文件格式的参数,就可以调用相应的处理函数。见第一部分的第3步。 概况的说,pg_dump导出的内容可以分为数据库对象的定义和数据。...通过调节导出顺序把数据库对象的定义导出然后导出数据,置于通过链表中对应数据对象节点的信息,执行相应的SQL语句,从表中读出数据然后导出写出去。...语句到test.sql中 [postgres@localhost ~]$ pg_dump --format=p yzs -f test.sql 3)以二进制格式输出 [postgres@localhost

    2.8K10

    记录一下PostgreSQL的备份和还原

    pg_dump不阻塞其他用户访问数据库(读取或写入)。 pg_dump只转储单个数据库。要备份一个集簇中 对于所有数据库公共的全局对象(例如角色和表空间),应使用 pg_dumpall。...转储可以被输出到脚本或归档文件格式。脚本转储是包含 SQL 命令的纯文本文件,它们可以用来重构数据库到它被转储时的状态。要从这样一个脚本恢复,将它喂给psql。...它们允许pg_restore能选择恢复什么,或者甚至在恢复之前对条目重排序。归档文件格式被设计为在架构之间可移植。...它们允许选择和重排序所有已归档项、支持并行恢复并且默认是压缩的。“目录”格式是唯一一种支持并行转储的格式。...当运行pg_dump时,我们应该检查输出中有没有任何警告(打印在标准错误上),特别是考虑到下面列出的限制。

    2.2K60

    YashanDB|迁移过程中,字符串里的分号导致SQL报错?原因与解决办法来了!

    在进行 PostgreSQL(pg)到 YashanDB(崖山数据库)的数据迁移时,部分用户遇到了一个棘手的问题:SQL 文件执行时,第一条语句就直接报错。但在 pg 上执行却没有任何问题。...一、问题现象通过 pg_dump 导出数据文件后,使用 yasql 工具执行;第一条 SQL 语句执行时报错;在 PostgreSQL 上执行同样语句正常;在 YashanDB 和 Oracle 上执行时均出现报错...二、风险与影响SQL 执行失败;数据插入、迁移流程中断;增加排查与修复成本,影响整体迁移进度。三、影响范围此问题影响所有版本的 YashanDB,目前尚无版本例外。...四、问题根本原因深入分析后发现,根本原因在于:Oracle 和 YashanDB 在解析 SQL 语句时,采用的是按行读取逻辑;如果一行的末尾是分号,数据库就默认这一行为一条完整的 SQL;但如果分号出现在字符串内部...七、经验总结在迁移 pg 到 YashanDB 的过程中,特别要注意字符串中带分号的 SQL;迁移前建议对 SQL 文件进行预处理,统一清洗或修正潜在问题;了解不同数据库在 SQL 解析上的细节差异,可以大幅提升迁移成功率

    18100

    ⑩③【MySQL】详解SQL优化

    插入数据 优化 insert优化: ⚪使用批量插入 ⚪手动提交事务(每次SQL语句执行后事务自动提交,手动提交避免了多次提交,提升效率) ⚪使用主键顺序插入(顺序比乱序速度更快,性能更高) 大批量插入数据...set global local_infile=1; -- 执行load指令将准备好的数据,加载到表结构中 -- 加载文件: /root/sql.log 中的数据插入表 -- 字段间使用 逗号','...排序前2000010记录,仅仅返回2000000到2000010的记录,其他记录丢弃,查询排序的代价非常大。...-- 优化前: select * from tb_sku limit 2000000,10; -- 优化后 -- 子查询的id字段存在主键索引,order by性能得到优化 -- 根据子查询的到的主键字段...②count(主键) InnoDB引擎会遍历整张表,把每一行的主键id值都取出来,返回给服务层。服务层拿到主键后,直接按行进行累加(主键不可能为NULL)。

    52040

    PostgreSQL 15 16 小版本更新信息小结 版本更新是不是挤牙膏

    最近整理了 MySQL 的 8.0.0 到 8.0.37 的版本中主要的更新内容要点和官方的链接的位置,PG 在版本上功能上,更新的速度相对 MySQL 有过之而无不及,本期我们也过一过 PG 从 PG...12 到 PG 16 中小版本的更新的功能和 Bug Fixed。...) 15.0 提高内存中排序的性能并减少内存消耗 https://www.postgresql.org/docs/release/15.0/ 15.0 提高在 work_mem 内存不足后的排序性能 https...Fix failure to remove non-first segments of large tables (Tom Lane) 15.1 在 GIN 索引的快速插入路径中修复 WAL 操作的错误排序...and might fail in strange ways depending on what the failed CREATE INDEX had left behind. 16.1 修复分区表中的批量表插入

    96410

    MySQL_库和表的使用(部分未完

    其他知识点详见置顶链接 还原命令在mysql中执行 mysql> source 备份文件路径 eg:source /yj/test2.bak.sql 数据库中的内容和原来数据库中的内容是相同的 mysql...在test表中插入数据Sno、Sage(Sno必填,因为是主键),如果填入的内容与主键发生重复冲突,则更新update语句后面指定字段中的内容 示例中是,如果发生主键/唯一键冲突,则将该主键/唯一键对应的数据中...一般情况下不建议使用全列查询 查询到的数据越多,数据传输量越大 可能会影响索引的使用 按列查询 查询指定字段的数据,并汇聚成一张表呈现出来 表达式查询 所以可以看出来,select到from之间的这部分...结果排序(order by) 按单字段升序【默认】/ 降序【后加DESC】 显示 降序在字段后加EDSC 按多字段排序 按照书写先后确定排序优先级 先按照数学将序排序,相等时,就再参考语文的升序,如果还是相等...,参考英语的升序 按求和结果排序 排序的时候可以使用别名,说明排序只是对于查询后的结果表进行排序,而不同于where(在查询时按条件筛选) where + order by 查询语文成绩大于70分的学生的

    65610

    PostgreSQL 备份与恢复(第一章)

    要了解PITR,首先必须了解什么是wal,wal代表预写日志文件,基本上对数据库每次插入、更新、删除在实际应用之前,就写入了日志中。...这样就算数据库突然出现了crash,在重新启动的过程中,PostgreSQL能够查看wal文件进行恢复并将数据库还原到可用的状态。...testdb.dmp -f testdb.sql #可以以解析为文本内容,类似于 pg_dump 备份 $ pg_restore -l testdb.dmp #查看二进制文件中的内容 $ pg_restore...-l testdb.dmp > toc.data #查看控制信息 $ pg_restore -d testdb testdb.dmp #把 dump 文件中的数据导入到 testdb 数据库中...$ pg_restore -d postgres testdb.dmp #把 dump 文件中的数据导入到 postgres 数据库中 利用 toc 文件选择性备份恢复: 1)根据二进制备份文件生成

    10.9K21

    从零开始学PostgreSQL-工具篇: 备份与恢复

    它可以生成 SQL 文件或自包含的归档文件,其中包含了创建和填充数据库所需的所有 SQL 命令。 用途:备份单个数据库。...pg_dump pg_dump参数详解 # 通用选项 -f, --file=FILENAME # 输出文件或目录的名称。...pg_dump使用示例 要将数据库转储到自定义格式的存档文件中,请执行以下操作: pg_dump -U postgres -h 127.0.0.1 -p 5432 -W -Fc -d mydb > db.dump...要将数据库转储到目录格式存档中,请执行以下操作: pg_dump -U postgres -h 127.0.0.1 -p 5432 -W -Fd -d mydb -f dumpdir 要将数据库转储到目录格式存档中...-j, --jobs=NUM # 使用多个并行任务来恢复 -L, --use-list=FILENAME # 使用此文件中的TOC选择/排序输出 -n, --schema

    2.3K10

    MySQL数据库进阶-SQL优化

    MySQL的慢查询日志默认没有开启,需要在MySQL的配置文件(/etc/my.cnf)中配置如下信息: # 开启慢查询日志开关 slow_query_log=1 # 设置慢查询日志的时间为2秒,SQL...插入数据 普通插入: 采用批量插入(一次插入的数据不建议超过1000条) 手动提交事务 主键顺序插入 大批量插入: 如果一次性需要插入大批量数据,使用insert语句插入性能较低,此时可以使用...,读取满足条件的数据行,然后在排序缓冲区 sort buffer 中完成排序操作,所有不是通过索引直接返回排序结果的排序都叫 FileSort 排序 Using index:通过有序索引顺序扫描直接返回有序数据...,把每行的主键id值都取出来,返回给服务层,服务层拿到主键后,直接按行进行累加(主键不可能为空) count(字段):没有not null约束的话,InnoDB引擎会遍历整张表把每一行的字段值都取出来...服务层对于返回的每一层,放一个数字 1 进去,直接按行进行累加 count(*):InnoDB 引擎并不会把全部字段取出来,而是专门做了优化,不取值,服务层直接按行进行累加 按效率排序:count

    74310

    MySQL进阶学习之SQL优化【插入,主键,排序,分组,分页,计数】

    注:在load时,主键顺序插入性能高于乱序插入 2、主键优化 2.1 数据组织方式 在InnoDB存储引擎中,表数据都是根据主键顺序组织存放的,这种存储方式的表称为索引组织表(index organized...那也就意味着, 一个页中所存储的行也是有限的,如果插入的数据行row在该页存储不小,将会存储到下一个页中,页与页之间会通过指针连接。 2.2 页分裂 页可以为空,也可以填充一半,也可以填充100%。...1、主键顺序插入效果 从磁盘中申请页,主键顺序插入,当第一页数据写满之后,再写入第二个页,页和页之间通过指针连接,第二页写满之后,再往第三页写入,以此类推。...2、主键乱序插入效果 第一页和第二页都写满了数据。  此时再插入id为50的记录的话,因为索引的叶子节点是有顺序的。按照顺序,应该存储再47之后,所以不会写入到新的页中。  但是!...,默认索引的叶子节点是从小到大排序的,而此时我们查询排序时,是从大到小,所以,在扫描时,就是反向扫描,就会出现 Backward index scan。

    2.7K30

    干货|MySQL增、删、改查性能优化的10个小技巧

    (百万数据十几秒),此时则使用load命令来进行插入数据,mysql原生支持大数据量插入,性能非常高) load命令的使用: 如果是命令行连接,需要指定客户端需要执行本地文件,在连接中添加:--local-infile...每个页包含了2-N行数据(如果一行数据太大,会行溢出),页中数据根据主键排序【InnoDB中规则每个页中至少大于2行,如果只有一行,证明形成了链表,在innodb中是允许的】。...页分裂:   如果插入数据是数据的主键时乱序插入,因为InnoDB中数据是按照主键的顺序存放在页中的,它会找到本应该插入的数据页50%的位置(该数据页因为乱序插入已经满了),然后将之后的元素以及新插入的元素放到新申请的页中...MyISAM引擎会把一个表中的总行数存储到磁盘中,在执行count(*)不带where条件时,可以直接拿到该数据,效率很高。   ...优化思路:借助内存数据库手动维护总条数,插入时加1,删除时减1等 count的用法: count(*): 对返回的数据进行计数。逻辑:引擎做了专门优化,不取值,服务层直接按行进行累加。

    2.2K10

    【云原生进阶之数据库技术】第三章-PostgreSQL-管理-2.2-运维操作

    mydb 4.恢复*.bak或*.sql的备份数据库,以下命令代表将mydb.sql的备份数据库恢复到mydb数据库 psql -U 用户名 -f /tmp/mydb.sql mydb 5.恢复自定义格式的备份数据库...##备份数据库 ##导出数据库保存为…… $ pg_dump -U 用户名 -f 备份文件 库名 ##导出数据库中某表保存为…… $ pg_dump -U postgres -f 备份文件 -t 表名...库名 ##导出数据库以tar格式压缩保存为…… $ pg_dump -U postgres -F t -f 备份文件 库名 ##恢复数据库 ##恢复备份文件到指定库 $ psql -U postgres...-f 备份文件 库名 ##从pg_dump创建的备份文件中恢复数据库,用于恢复由pg_dump转储的任何非纯文本格式中的数据库。...(不区分ID) UPDATE 表名 SET 字段1=字段1更新的值,字段2=字段2更新的值; (12)按特定条件删除表中的数据 DELETE FROM 表名 WHERE 字段名=字段值; (13)查看当前时间

    90610

    PostgreSQL 13.0-13.15 功能更新和bug fixed列表

    ,并添加一些缺失的检查来确认索引是预期类型的 PG13.7 在contrib/postgres_fdw中,在请求远程有序查询之前验证ORDER BY子句是否安全,如有必要,添加USING子句,此修复防止远程服务器可能按我们意图的不同顺序排序...PG13.9 修复GIN索引快速插入路径中WAL操作的错误排序 PG13.9 在逻辑解码期间防止使用错误的快照检查系统目录,如果解码从修改系统目录的事务的一部分开始,解码器可能不会意识到这一点,导致它无法将该事务视为进行中以进行目录查找...PG13.9 修复将read-write扩展数据传递给SQL函数时的使用后释放风险,如果一个非内联的SQL函数在多个地方使用参数,并且其中一个函数希望能够就地修改read-write数据,那么稍后对参数的使用将观察到错误的值...中,不要转储扩展成员对象的 RLS 策略或安全标签 PG13.15 版本号 BUG FIXED/功能更新 PG13.15 修复多行 VALUES 语句插入到作为数组或复合类型域的目标列中的问题,这些情况下...,避免发出按常量排序的请求,这可能出现在涉及 UNION ALL 和常量生成子查询的情况下。

    2.5K10
    领券