将SQL数据从备份表复制到其他表

时间:2020-02-04 19:30:25

标签: sql mariadb

将数据从一个MariaDB SQL表复制到已具有所有相同列的另一表的最简单方法是什么。基本上,我们有一个包含一些示例数据的备份表(crdynamics.customer_records_backup),我想将该数据复制到另一个表(crdynamics.customer_records)中。同样,这些是相同的表-只有一个表具有数据,而一个表没有数据。

实现此目的最简单的语法是什么?

我尝试过,但是语法不正确:

UPDATE crdynamics.customer_records
SELECT *
FROM
    crdynamics.customer_records_backup

3 个答案:

答案 0 :(得分:3)

您似乎只想要INSERT而不是UPDATE

INSERT crdynamics.customer_records (<ColumnList>)
SELECT
 <ColumnList>
FROM 
 crdynamics.customer_records_backup;

从技术上讲,您可以执行以下操作:

INSERT crdynamics.customer_records 
SELECT
 *
FROM 
 crdynamics.customer_records_backup;

但是始终指定列名的可能性要小得多。

答案 1 :(得分:0)

您可以使用insert into select语句

insert into crdynamics.customer_records 
SELECT * FROM crdynamics.customer_records_backup 
where 1=1;

答案 2 :(得分:0)

CREATE TABLE new_backup LIKE real_table;
INSERT INTO new_backup SELECT * FROM real_table;
RENAME TABLE backup TO old_backup, new_backup TO backup;
DROP TABLE old_backup;

注意:

  • backup始终存在并已填充,与涉及TRUNCATE等的情况不同。
  • 通过执行CREATE .. LIKERENAME,即使当前模式已更改,您也可以获取当前模式。
  • RENAME是原子的。
  • (缺点)在此过程中,该表有3个副本;这可能是磁盘空间问题。
  • (缺点)INSERT .. SELECTreal_table阻止了其他活动。
  • 仅提及INSERT .. SELECT的答案无法说明第二备份的结果。
相关问题