Gemakkelijkste manier om een ​​tabel van de ene database naar de andere te kopiëren?

Wat is de beste methode om de gegevens van een tabel in de ene database naar een tabel in een andere database te kopiëren als de databases onder verschillende gebruikers staan?

Ik weet dat ik kan gebruiken

INSERT INTO database2.table2 SELECT * from database1.table1

Maar hier is het probleem dat zowel database1als database2onder verschillende MySQL-gebruikers staan. Dus user1heeft alleen toegang tot database1en user2heeft alleen toegang tot database2. Enig idee?


Antwoord 1, autoriteit 100%

Als je shell-toegang hebt, kun je mysqldumpgebruiken om de inhoud van database1.table1te dumpen en naar mysqlte pipen naar database2. Het probleem hier is dat table1nog steeds table1is.

mysqldump --user=user1 --password=password1 database1 table1 \
| mysql --user=user2 --password=password2 database2

Misschien moet je de naam van table1wijzigen in table2met een andere zoekopdracht. Aan de andere kant zou je sed kunnen gebruiken om table1 te veranderen in table2 tussen de to pipes.

mysqldump --user=user1 --password=password1 database1 table1 \
| sed -e 's/`table1`/`table2`/' \
| mysql --user=user2 --password=password2 database2

Als table2 al bestaat, zou je de parameters aan de eerste mysqldump kunnen toevoegen, zodat je de table-creates niet kunt maken.

mysqldump --no-create-info --no-create-db --user=user1 --password=password1 database1 table1 \
| sed -e 's/`table1`/`table2`/' \
| mysql --user=user2 --password=password2 database2

Antwoord 2, autoriteit 95%

CREATE TABLE db1.table1 SELECT * FROM db2.table1

waarbij db1 de bestemming is en db2 de bron


Antwoord 3, autoriteit 54%

Als u PHPMyAdmin gebruikt,kan het heel eenvoudig zijn.
Stel dat u de volgende databases heeft:

DB1 & DB2

DB1 heeft een gebruikerstabel die u graag naar DB2 kopieert

Open onder PHPMyAdmin DB1 en ga vervolgens naar de gebruikerstabel.

Klik op deze pagina op het tabblad ‘Bewerkingen’in de rechterbovenhoek.
Zoek onder Bewerkingen naar de sectie Kopieer tabel naar (database.table):

& je bent klaar!


Antwoord 4, autoriteit 22%

MySql Workbench: sterk aanbevolen

Dit lost gemakkelijk migratieproblemen op. U kunt geselecteerde tabellen van geselecteerde databases migreren tussen MySql en SqlServer. Je moet het zeker eens proberen.


Antwoord 5, autoriteit 18%

Ik gebruik Navicat voor MySQL…

Het maakt alle databasemanipulatie gemakkelijk!

Je selecteert gewoon beide databases in Navicat en gebruikt ze dan.

INSERT INTO Database2.Table1 SELECT * from Database1.Table1

Antwoord 6, autoriteit 11%

het heeft me goed gedaan

CREATE TABLE dbto.table_name like dbfrom.table_name;
insert into  dbto.table_name select * from dbfrom.table_name;

Antwoord 7, autoriteit 10%

Als uw tabellen op dezelfde mysql-server staan, kunt u het volgende uitvoeren

CREATE TABLE destination_db.my_table SELECT * FROM source_db.my_table;
ALTER TABLE destination_db.my_table ADD PRIMARY KEY (id); 
ALTER TABLE destination_db.my_table MODIFY COLUMN id INT AUTO_INCREMENT;

Antwoord 8, autoriteit 9%

Ik weet dat dit een oude vraag is, gewoon een antwoord zodat iedereen die hier terechtkomt een betere benadering krijgt.

Vanaf 5.6.10 kunt u

CREATE TABLE new_tbl LIKE orig_tbl;

Raadpleeg de documentatie hier: https://dev. mysql.com/doc/refman/5.7/en/create-table-like.html


Antwoord 9, autoriteit 8%

Hier is nog een gemakkelijke manier:

  1. gebruik DB1; toon tabel maken TB1;
    • kopieer de syntaxis hier naar het klembord om TB1 in DB2 te maken
  2. gebruik DB2;
    • plak hier de syntaxis om de tabel TB1 te maken

INSERT INTO DB2.TB1 SELECT * from DB1.TB1;


Antwoord 10, autoriteit 6%

Gebruik de export- en importfunctionaliteit van MySql Workbench.
Stappen:
1. Selecteer de gewenste waarden

E.g. select * from table1; 
  1. Klik op de knop Exporteren en sla het op als CSV.
  2. maak een nieuwe tabel met vergelijkbare kolommen als de eerste

    E.g. create table table2 like table1; 
    
  3. selecteer alles uit de nieuwe tabel

    E.g. select * from table2;  
    
  4. Klik op Importeren en selecteer het CSV-bestand dat u in stap 2 heeft geëxporteerd


Antwoord 11, autoriteit 3%

Probeer mysqldbcopy(documentatie)

Of u kunt een “federatieve tabelmaken ” op uw doelhost. Met federatieve tabellen kunt u een tabel van een andere databaseserver zien alsof het een lokale server is. (documentatie)

Na het maken van de federatieve tabel, kunt u gegevens kopiëren met de gebruikelijke insert into TARGET select * from SOURCE


Antwoord 12, autoriteit 3%

Met MySQL Workbench kunt u Gegevens exporteren gebruiken om alleen de tabel naar een lokaal SQL-bestand te dumpen (Alleen gegevens, Alleen structuur of Structuur en gegevens) en vervolgens Gegevens importeren om het in de andere DB te laden.

U kunt meerdere verbindingen (verschillende hosts, databases, gebruikers) tegelijkertijd open hebben.


Antwoord 13, autoriteit 2%

Een eenvoudige manier om alle query’s te krijgen die u nodig hebt, is door de gegevens van information_schema en concat te gebruiken.

SELECT concat('CREATE TABLE new_db.', TABLE_NAME, ' LIKE old_db.', TABLE_NAME, ';') FROM `TABLES` WHERE TABLE_SCHEMA = 'old_db';

Je krijgt dan een lijst met resultaten die er als volgt uitziet:

CREATE TABLE new_db.articles LIKE old_db.articles;
CREATE TABLE new_db.categories LIKE old_db.categories;
CREATE TABLE new_db.users LIKE old_db.users;
...

Je kunt die zoekopdrachten dan gewoon uitvoeren.

Het werkt echter niet met MySQL-weergaven. U kunt ze vermijden door AND TABLE_TYPE = 'BASE TABLE'toe te voegen vanaf de eerste zoekopdracht:


Antwoord 14, autoriteit 2%

Maak eerst de dump aan. De --no-create-info --no-create-dbvlaggen toegevoegd als table2al bestaat:

mysqldump -u user1 -p database1 table1 > dump.sql

Voer vervolgens het wachtwoord voor user1in. Dan:

sed -e 's/`table1`/`table2`/' dump.sql
mysql -u user2 -p database2 < dump.sql

Voer vervolgens het user2-wachtwoord in.

Hetzelfde als helmor’s antwoordmaar de aanpak is veiliger omdat wachtwoorden niet in onbewerkte tekst op de console worden weergegeven ( reverse-i-search, wachtwoord sniffers, enz.). Een andere benadering is prima als het wordt uitgevoerd vanuit een scriptbestand met de juiste beperkingen op de permissies.


Antwoord 15, autoriteit 2%

Is dit iets dat u regelmatig moet doen, of slechts eenmalig?

U kunt een export doen (bijv. met phpMyAdmin of iets dergelijks) die uw tabel en de inhoud ervan naar een tekstbestand zal scripten, waarna u dat opnieuw in de andere database kunt importeren.


Antwoord 16

gebruik onderstaande stappen om enkele kolommen van de ene databasetabel naar een andere databasetabel te kopiëren en in te voegen-

  1. CREATE TABLE tabelnaam ( kolomnaam gegevenstype (grootte), kolomnaam gegevenstype (grootte));

2.INSERT INTO db2.tablename SELECT columnname1,columnname2 FROM db1.tablename;


Antwoord 17

IN xampp exporteer gewoon de vereiste tabel als een .sql-bestand en importeer het dan naar de vereiste


Antwoord 18

Voor mij heb ik een specifiek schema nodig voor “information_schema.TABLES”

bijvoorbeeld.

SELECT concat('CREATE TABLE new_db.', TABLE_NAME, ' LIKE old_db.', TABLE_NAME, ';') FROM information_schema.TABLES  WHERE TABLE_SCHEMA = 'old_db';

Antwoord 19

maak tabel destination_customer zoals sakila.customer(Database_name.tablename), dit kopieert alleen de structuur van de brontabel, om gegevens ook te kopiëren met de structuur, doe dit maak een tabel Destination_customer als selecteer * van sakila.customer

Other episodes