В MySQL, как скопировать содержимое одной таблицы в другую таблицу в той же базе данных? - PullRequest
107 голосов
/ 26 февраля 2010

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

Ответы [ 7 ]

171 голосов
/ 26 февраля 2010

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
128 голосов
/ 26 февраля 2010

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

CREATE TABLE table2 LIKE table1;

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

INSERT INTO table2 SELECT * FROM table1
26 голосов
/ 26 февраля 2010

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

CREATE TABLE table2 LIKE table1;

SELECT * INTO OUTFILE '/tmp/table1.txt' FROM table1;
LOAD DATA INFILE '/tmp/table1.txt' INTO TABLE table2;
9 голосов
/ 13 сентября 2017

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

CREATE TABLE newtable LIKE oldtable;

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

INSERT newtable SELECT * FROM oldtable;

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

Спасибо

9 голосов
/ 27 февраля 2010

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

CREATE TABLE new_tbl SELECT * FROM orig_tbl;

0 голосов
/ 13 июля 2017

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

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

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

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

0 голосов
/ 20 февраля 2015

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

CREATE TABLE new_table
  AS (SELECT * FROM old_table);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...