В MySQL, как скопировать содержимое одной таблицы в другую таблицу в одной базе данных?

Я новичок в MySQL. Я хотел бы скопировать содержимое одной таблицы в другую таблицу в той же базе данных. В принципе, я хотел бы вставить в таблицу из другой таблицы. Есть ли простой способ сделать это?

Ответ 1

INSERT INTO TARGET_TABLE SELECT * FROM SOURCE_TABLE;

EDIT: или если таблицы имеют разные структуры, вы также можете:

INSERT INTO TARGET_TABLE (`col1`,`col2`) SELECT `col1`,`col2` FROM SOURCE_TABLE;

EDIT: ограничение этого..

INSERT INTO TARGET_TABLE (`col1_`,`col2_`) SELECT `col1`,`col2` FROM SOURCE_TABLE WHERE `foo`=1

Ответ 2

Если таблица не существует, вы можете создать ее с такой же схемой:

CREATE TABLE table2 LIKE table1;

Затем, чтобы скопировать данные:

INSERT INTO table2 SELECT * FROM table1

Ответ 3

Если таблица1 большая и вы не хотите ее блокировать в течение всего процесса копирования, вы можете сделать дамп и нагрузку:

CREATE TABLE table2 LIKE table1;

SELECT * INTO OUTFILE '/tmp/table1.txt' FROM table1;
LOAD DATA INFILE '/tmp/table1.txt' INTO TABLE table2;

Ответ 4

Если вы хотите создать и скопировать содержимое одним выстрелом, просто используйте SELECT:

CREATE TABLE new_tbl SELECT * FROM orig_tbl;

Ответ 5

Это сработало для меня,

CREATE TABLE newtable LIKE oldtable;

Реплицирует newtable со старой таблицей

INSERT newtable SELECT * FROM oldtable;

Копирует все данные строки в новую таблицу.

Спасибо

Ответ 6

Это сработало для меня. Вы можете сделать оператор SELECT более сложным, с предложениями WHERE и LIMIT.

Сначала дублируйте свою большую таблицу (без данных), запустите следующий запрос и затем обрезайте большую таблицу.

INSERT INTO table_small (SELECT * FROM table_large WHERE column = 'value' LIMIT 100)

Супер простой.: -)

Ответ 7

Попробуйте это. Хорошо работает в моем Oracle 10g,

CREATE TABLE new_table
  AS (SELECT * FROM old_table);