在MySQL中,如何将数据从一个表复制到同一数据库表中的另一个表?
我知道insert into select
,但是要花很多时间才能做到这一点,尤其是在实时数据库中,我们不能冒险。
存在一些条件:
1. table1是源表,table1_archives是目标表。
2. table1_archives已经有数据,所以我们只能追加。
我的尝试:
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
但是它的名字是table1,所以我不能将其插入table1_archives中。
任何指导将不胜感激。
提前致谢。
在输出文件中,您需要将表名称更改table1
为table1_archives
。不幸的mysqldump
是没有任何办法可以做到这一点。您必须使用即时执行此操作sed
,它将输出文件中的所有内容重命名table1
为table1_archives
。
由于您的列还可以包含like之类的内容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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句