Jaka jest najlepsza metoda kopiowania danych z tabeli w jednej bazie danych do tabeli w innej bazie danych, gdy bazy danych należą do różnych użytkowników?
Wiem, że mogę użyć
INSERT INTO database2.table2 SELECT * from database1.table1
Ale tutaj problem polega na tym, że zarówno database1
i database2
są pod różnymi użytkownikami MySQL. Więc user1
ma database1
tylko dostęp i user2
ma database2
tylko dostęp . Dowolny pomysł?
Odpowiedzi:
Jeśli masz dostęp do powłoki, możesz
mysqldump
zrzucić zawartośćdatabase1.table1
i przesłać jąmysql
dodatabase2
. Problem w tym, żetable1
nadaltable1
.Może musisz zmienić nazwę
table1
na zatable2
pomocą innego zapytania. Z drugiej strony możesz użyć seda do zmiany tabeli1 na tabelę2 między potokami do.Jeśli tabela2 już istnieje, możesz dodać parametry do pierwszego mysqldump, które nie pozwalają na tworzenie tabel-stworzeń.
źródło
CREATE TABLE db1.table1 SELECT * FROM db2.table1
gdzie db1 to miejsce docelowe, a db2 to źródło
źródło
ALTER TABLE db1.table1 ADD PRIMARY KEY (id); ALTER TABLE db1.table1 MODIFY COLUMN id INT AUTO_INCREMENT;
Jeśli używasz PHPMyAdmin, może to być naprawdę proste. Załóżmy, że masz następujące bazy danych:
DB1 ma tabelę użytkowników, którą chcesz skopiować do DB2
W PHPMyAdmin otwórz DB1, a następnie przejdź do tabeli użytkowników.
Na tej stronie kliknij kartę „Operacje” w prawym górnym rogu. W obszarze Operacje poszukaj sekcji Kopiuj tabelę do (database.table):
i gotowe!
źródło
Środowisko pracy MySql : zdecydowanie zalecane
To z łatwością rozwiąże problemy migracji. Możesz migrować wybrane tabele wybranych baz danych między MySql i SqlServer. Zdecydowanie powinieneś spróbować.
źródło
mysql Workbench
migrację zSQLYog
kopią bazy danych? Z mojego szybkiego spojrzenia wydaje się, że są bardzo podobne, aleUżywam Navicat dla MySQL ...
To sprawia, że wszystkie operacje na bazie danych są łatwe!
Wystarczy wybrać obie bazy danych w Navicat, a następnie użyć.
źródło
Wiem, że to stare pytanie, odpowiadam tylko po to, aby każdy, kto tu wyląduje, miał lepsze podejście.
Od 5.6.10 możesz to zrobić
Zapoznaj się z dokumentacją tutaj: https://dev.mysql.com/doc/refman/5.7/en/create-table-like.html
źródło
Jeśli twoje tabele znajdują się na tym samym serwerze mysql, możesz uruchomić następujące
źródło
Użyj funkcji eksportu i importu MySql Workbench. Kroki:
1. Wybierz żądane wartości
utwórz nową tabelę, używając podobnych kolumn jak pierwsza
wybierz wszystko z nowej tabeli
Kliknij Importuj i wybierz plik CSV wyeksportowany w kroku 2
źródło
Oto inny łatwy sposób:
INSERT INTO DB2.TB1 SELECT * from DB1.TB1;
źródło
Wypróbuj
mysqldbcopy
( dokumentacja )Możesz też utworzyć „ tabelę stowarzyszoną ” na hoście docelowym. Tabele stowarzyszone umożliwiają wyświetlanie tabeli z innego serwera bazy danych tak, jakby był to serwer lokalny. ( dokumentacja )
Po utworzeniu tabeli stowarzyszonej można skopiować dane za pomocą zwykłego formatu
insert into TARGET select * from SOURCE
źródło
Dzięki MySQL Workbench możesz użyć eksportu danych, aby zrzucić tylko tabelę do lokalnego pliku SQL (tylko dane, tylko struktura lub struktura i dane), a następnie import danych, aby załadować ją do innej bazy danych.
Możesz mieć jednocześnie otwartych wiele połączeń (różnych hostów, baz danych, użytkowników).
źródło
Jednym prostym sposobem uzyskania wszystkich potrzebnych zapytań jest użycie danych z information_schema i concat.
Otrzymasz wtedy listę wyników, która wygląda następująco:
Następnie możesz po prostu uruchomić te zapytania.
Jednak nie będzie działać z widokami MySQL. Możesz ich uniknąć, dołączając
AND TABLE_TYPE = 'BASE TABLE'
do początkowego zapytania:źródło
Czy to coś, co musisz robić regularnie, czy tylko jednorazowo?
Możesz wykonać eksport (np. Używając phpMyAdmina lub podobnego), który zapisze twoją tabelę i jej zawartość do pliku tekstowego, a następnie możesz ponownie zaimportować to do innej bazy danych.
źródło
wykonaj poniższe czynności, aby skopiować i wstawić niektóre kolumny z jednej tabeli bazy danych do innej tabeli bazy danych-
2.INSERT INTO db2.tablename SELECT columnname1, columnname2 FROM db1.tablename;
źródło
Najpierw utwórz zrzut. Dodano
--no-create-info --no-create-db
flagi, jeślitable2
już istnieją:Następnie wprowadź
user1
hasło. Następnie:Następnie wejdź
user2
hasło.To samo, co odpowiedź @helmors, ale podejście jest bezpieczniejsze, ponieważ hasła nie są ujawniane w postaci surowego tekstu w konsoli (wyszukiwanie odwrotne i, sniffery haseł itp.). Inne podejście jest dobre, jeśli jest wykonywane z pliku skryptu z odpowiednimi ograniczeniami nałożonymi na jego uprawnienia.
źródło
W xampp po prostu wyeksportuj wymaganą tabelę jako plik .sql, a następnie zaimportuj ją do wymaganego
źródło
utwórz tabelę klient_docelowy, taki jak sakila.customer ( nazwa_bazy_danych.nazwa tabeli ), spowoduje to jedynie skopiowanie struktury tabeli źródłowej, aby dane również zostały skopiowane ze strukturą, utwórz tabelę klient_docelowy jako select * from sakila.customer
źródło
CREATE TABLE LIKE
w pytaniu, więc po co wspominać, że jest źle? I nie ma wyjaśnienia, w jaki sposób ta odpowiedź rozwiązuje problem polegający na tym, że żaden użytkownik nie ma dostępu do tabel drugiego.