我是MySQL的新手。我想将一个表的内容复制到同一数据库中的另一个表。基本上,我想从另一个表插入到一个表中。有没有简单的方法可以做到这一点?
我是MySQL的新手。我想将一个表的内容复制到同一数据库中的另一个表。基本上,我想从另一个表插入到一个表中。有没有简单的方法可以做到这一点?
Answers:
INSERT INTO TARGET_TABLE SELECT * FROM SOURCE_TABLE;
编辑:或如果表具有不同的结构,您还可以:
INSERT INTO TARGET_TABLE (`col1`,`col2`) SELECT `col1`,`col2` FROM SOURCE_TABLE;
编辑:限制此。
INSERT INTO TARGET_TABLE (`col1_`,`col2_`) SELECT `col1`,`col2` FROM SOURCE_TABLE WHERE `foo`=1
如果该表不存在,则可以使用相同的架构创建一个,如下所示:
CREATE TABLE table2 LIKE table1;
然后,要复制数据:
INSERT INTO table2 SELECT * FROM table1
SELECT ... INTO
用于将表导出到输出文件或变量;不能直接插入表格。参见dev.mysql.com/doc/refman/5.7/en/select-into.html
如果table1很大,并且您不想在复制过程中锁定它,则可以转储并加载:
CREATE TABLE table2 LIKE table1;
SELECT * INTO OUTFILE '/tmp/table1.txt' FROM table1;
LOAD DATA INFILE '/tmp/table1.txt' INTO TABLE table2;
show processlist
,我看不到任何查询在运行。不知道是什么问题。
这对我有用。您可以使用WHERE和LIMIT子句使SELECT语句更复杂。
首先复制大表(不包含数据),运行以下查询,然后截断大表。
INSERT INTO table_small (SELECT * FROM table_large WHERE column = 'value' LIMIT 100)
超级简单。:-)
CREATE TABLE target_table SELECT * FROM source_table;
它只是创建一个与源表具有相同结构的新表,还将所有行从source_table复制到target_table。
CREATE TABLE target_table SELECT * FROM source_table WHERE condition;
如果需要将某些行复制到target_table中,请在where 子句中应用条件
试试这个。在我的Oracle 10g中效果很好,
CREATE TABLE new_table
AS (SELECT * FROM old_table);