Jestem nowy w MySQL. Chciałbym skopiować zawartość jednej tabeli do innej tabeli w tej samej bazie danych. Zasadniczo chciałbym wstawić do tabeli z innej tabeli. Czy jest na to łatwy sposób?
118
INSERT INTO TARGET_TABLE SELECT * FROM SOURCE_TABLE;
EDYCJA: lub jeśli tabele mają różne struktury, możesz również:
INSERT INTO TARGET_TABLE (`col1`,`col2`) SELECT `col1`,`col2` FROM SOURCE_TABLE;
EDYCJA: aby to ograniczyć ..
INSERT INTO TARGET_TABLE (`col1_`,`col2_`) SELECT `col1`,`col2` FROM SOURCE_TABLE WHERE `foo`=1
Jeśli tabela nie istnieje, możesz ją utworzyć z takim samym schematem:
Następnie, aby skopiować dane:
źródło
SELECT * INTO newTable FROM sourceTable
w w3school , dlaczego nie działaMySQL
SELECT ... INTO
służy do eksportowania tabeli do pliku wyjściowego lub do zmiennych; nie bezpośrednio do stołu. Zobacz dev.mysql.com/doc/refman/5.7/en/select-into.htmlJeśli tabela1 jest duża i nie chcesz jej blokować na czas kopiowania, możesz zamiast tego wykonać zrzut i załadować:
źródło
show processlist
nie widziałem uruchomionego żadnego zapytania. Nie wiem, o co chodzi.To zadziałało dla mnie,
CREATE TABLE newtable LIKE oldtable;
Replikuje newtable ze starym stołem
INSERT newtable SELECT * FROM oldtable
;Kopiuje wszystkie dane wiersza do nowej tabeli.
Dziękuję Ci
źródło
Jeśli chcesz stworzyć i skopiować zawartość w jednym ujęciu, po prostu użyj SELECT:
źródło
To zadziałało dla mnie. Możesz uczynić instrukcję SELECT bardziej złożoną za pomocą klauzul WHERE i LIMIT.
Najpierw zduplikuj dużą tabelę (bez danych), uruchom następujące zapytanie, a następnie obetnij większą tabelę.
Super proste. :-)
źródło
Po prostu tworzy nową tabelę z taką samą strukturą jak tabela źródłowa, a także kopiuje wszystkie wiersze z tabeli źródłowej do tabeli docelowej.
Jeśli chcesz skopiować jakieś wiersze do target_table, zastosuj warunek wewnątrz klauzuli where
źródło
Spróbuj tego. Działa dobrze w mojej Oracle 10g,
źródło