gpt4 book ai didi

mysqldump 表而不转储主键

转载 作者:IT老高 更新时间:2023-10-28 13:00:23 34 4
gpt4 key购买 nike

我有一张表分布在运行 MySql 4 的两台服务器上。我需要将它们合并到一台服务器中以用于我们的测试环境。

这些表实际上每个都有数百万条记录,它们位于两台服务器上的原因是因为它们非常庞大。对表的任何更改和分页都会给我们带来太大的性能损失。

因为它们在生产环境中,所以我不可能在它们现有的服务器上以任何方式更改它们。

问题是主键是一个唯一的自增字段,所以会有交集。

我一直试图弄清楚如何使用 mysqldump 命令忽略某些字段,但 --disable-keys 只是改变了表,而不是完全摆脱了键。

在这一点上,我似乎需要修改数据库结构以利用主键的校验和或哈希作为实际上应该是唯一的两个唯一字段的组合......我真的不'不想这样做。

救命!

最佳答案

为了解决这个问题,我查了这个问题,找到了@pumpkinthehead 的答案,意识到我们需要做的就是find+replace每行的主键为NULL,这样mysql就会使用默认的auto_increment值.

(你的完整 mysqldump 命令)| sed -e "s/([0-9]*,/(NULL,/gi"> my_dump_with_no_primary_keys.sql

原始输出:

INSERT INTO `core_config_data` VALUES
(2735,'default',0,'productupdates/configuration/sender_email_identity','general'),
(2736,'default',0,'productupdates/configuration/unsubscribe','1'),

转换后的输出:

INSERT INTO `core_config_data` VALUES
(NULL,'default',0,'productupdates/configuration/sender_email_identity','general'),
(NULL,'default',0,'productupdates/configuration/unsubscribe','1'),

注意:这仍然是一个 hack;例如,如果您的自动增量列不是第一列,但 99% 的时间都解决了我的问题,它将失败。

关于mysqldump 表而不转储主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1018669/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com