Я новичок в 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);