Mysql 如何将数据从一个表复制到同一数据库中的另一个表?
在MySQL中,如何将数据从一个表复制到同一数据库表中的另一个表 我知道将Mysql 如何将数据从一个表复制到同一数据库中的另一个表?,mysql,Mysql,在MySQL中,如何将数据从一个表复制到同一数据库表中的另一个表 我知道将插入select,但这需要花费很长时间,尤其是在实时数据库上,我们不能冒险 有一些条件: 1.表1是源表,表1_存档是目标表。 2.表1\u归档文件已经有数据,因此我们只能追加 我的尝试: time mysqldump --log-error=$logfile --complete-insert --insert-ignore --no-create-info --skip-triggers --user=$dbuser
插入select
,但这需要花费很长时间,尤其是在实时数据库上,我们不能冒险
有一些条件:1.表1是源表,表1_存档是目标表。
2.表1\u归档文件已经有数据,因此我们只能追加 我的尝试:
time mysqldump --log-error=$logfile --complete-insert --insert-ignore
--no-create-info --skip-triggers --user=$dbuser --host=$host $dbname table1
--where="created < now()-interval 10 month" > $filename
time mysqldump--log error=$logfile--complete insert--insert ignore
--无创建信息--跳过触发器--用户=$dbuser--主机=$host$dbname table1
--where=“created$filename
但是它的名字是table1,所以我不能将它插入table1\u档案中
任何指导都将不胜感激
提前感谢。“但要做到这一点需要花费很长时间”
有一个小技巧可以避免这种情况,然后,插入到
会更快:
Insert into table1 select * from table2
诀窍:
step-1: drop all indices from table2
step-2: execute query
step-3: create indices again
“但要做到这一点需要很长时间”
有一个小技巧可以避免这种情况,然后,插入到
会更快:
Insert into table1 select * from table2
诀窍:
step-1: drop all indices from table2
step-2: execute query
step-3: create indices again
在输出文件中,您需要将表名
table1
更改为table1\u存档
。不幸的是,mysqldump
没有任何方法可以做到这一点。您必须使用sed
动态执行此操作,这将把输出文件中的所有内容从table1
重命名为table1\u归档文件
由于您的列也可以包含类似于table1
的内容,因此最好将它们括在反勾中进行搜索和替换
您还可以使用gzip
压缩输出文件
这是对我有效的命令
mysqldump -u USER -h HOST -p --skip-add-drop-table --no-create-info --skip-triggers --compact DB table1 |\
sed -e 's/`table1`/`table1_archives`/' | gzip > filename.sql.gz
在输出文件中,您需要将表名
table1
更改为table1\u存档
。不幸的是,mysqldump
没有任何方法可以做到这一点。您必须使用sed
动态执行此操作,这将把输出文件中的所有内容从table1
重命名为table1\u归档文件
由于您的列也可以包含类似于table1
的内容,因此最好将它们括在反勾中进行搜索和替换
您还可以使用gzip
压缩输出文件
这是对我有效的命令
mysqldump -u USER -h HOST -p --skip-add-drop-table --no-create-info --skip-triggers --compact DB table1 |\
sed -e 's/`table1`/`table1_archives`/' | gzip > filename.sql.gz
永远有多长?您多久归档一次记录?你平均归档多少条记录?每个周末归档一次。每周总共有10L条记录。如果仔细检查,是否可以尝试工作台迁移,它有一些条件(-where),如果工作正常,我将在一台服务器上检查。然后需要在多个服务器上执行相同的操作。永久的时间是多长?您多久归档一次记录?你平均归档多少条记录?每个周末归档一次。每周总共有10L条记录。如果仔细检查,是否可以尝试工作台迁移,它有一些条件(-where),如果工作正常,我将在一台服务器上检查。然后需要在多个服务器上执行相同的操作。亲爱的downvoter,我敢打赌。我用这个技巧迁移了这么多大型数据库。当我开始的时候,花了整整一天的时间,然后我需要取消。(复制100万条记录)。然后我在上面做了,只花了7秒钟。“从表2中删除所有索引”:您能解释一下:什么是索引?drop=delete table in database,所以您将删除表2中数据库中的所有表索引吗?@Eric correct,我使用在插入之前删除每个索引,然后在插入之后重新创建它们。基本上,如果有任何索引(明显不是PK),那么当数据集很大时,插入速度会变慢,变得超出我们的能力范围。ok,:从myTable中删除所有索引(我不理解术语“索引”),插入十亿行,然后重新创建索引..:-):好的:-)亲爱的选民,我敢打赌。我用这个技巧迁移了这么多大型数据库。当我开始的时候,花了整整一天的时间,然后我需要取消。(复制100万条记录)。然后我在上面做了,只花了7秒钟。“从表2中删除所有索引”:您能解释一下:什么是索引?drop=delete table in database,所以您将删除表2中数据库中的所有表索引吗?@Eric correct,我使用在插入之前删除每个索引,然后在插入之后重新创建它们。基本上,如果有任何索引(明显不是PK),那么当数据集很大时,插入速度会变慢,变得超出我们的能力范围。ok,:从myTable中删除所有索引(我不理解术语“索引”),插入十亿行,然后重新创建索引..:-):好的:-)