Voglio farlo utilizzando un codice e non utilizzando uno strumento come "MySQL Migration Toolkit". Il modo più semplice che conosco è di aprire una connessione (usando i connettori MySQL) a DB1 e leggere i suoi dati. Aprire la connessione a DB2 e scrivere i dati su di esso. C'è un modo migliore/più semplice?Come posso trasferire i dati tra 2 database MySQL?
risposta
Per prima cosa ho intenzione di assumere che non sono in grado di basta copiare la directory data /, perché se si sta utilizzando lo snapshot/backup/ripristino esistente sarà probabilmente sufficiente (e testare le procedure di backup/ripristino nell'affare).
In tal caso, se i due tavoli hanno la stessa struttura generalmente il più veloce, e ironicamente l'approccio più semplice sarà usare SELECT ... INTO OUTFILE ... su un'estremità e LOAD DATA INFILE ... on l'altro.
Vedere http://dev.mysql.com/doc/refman/5.1/en/load-data.html e .../select.html per i dettagli definitivi.
Per le tabelle banali quanto segue funziona:
SELECT * FROM mytable INTO OUTFILE '/tmp/mytable.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\\\'
LINES TERMINATED BY '\\n' ;
LOAD DATA INFILE '/tmp/mytable.csv' INTO TABLE mytable
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\\\'
LINES TERMINATED BY '\\n' ;
Abbiamo usato anche FIFO di grande efficacia per evitare il sovraccarico di realtà la scrittura su disco, o se abbiamo bisogno di scrivere su disco per qualche ragione, per collegarlo tramite gzip.
ie.
mkfifo /tmp/myfifo
gzip -c /tmp/myfifo > /tmp/mytable.csv.gz &
... SEL
ECT... INTO OUTFILE '/tmp/myfifo' .....
wait
gunzip -c /tmp/mytable.csv.gz > /tmp/myfifo &
... LOAD DATA INFILE /tmp/myfifo .....
wait
In sostanza, quello che dirigere i dati della tabella ad un FIFO si può comprimere, munge, o tunnel che attraverso una rete ai vostri cuori contenuto.
Grazie, anche se è nel manuale dev.mysql ma non funziona proberamente. Mi sta dando questo errore: Si ha un errore nella sintassi SQL; controlla il manuale che corrisponde alla tua versione del server MySQL per la sintassi corretta da usare vicino a '\ n' 'alla riga 1) Non accetta' \ n '.. perché? – Morano88
Stack Overflow ha corrotto la query di esempio. Nell'origine, la barra nella clausola ESCAPED BY è stata sfuggita, ma l'escape è stato perso quando convertito in html. Mi dispiace, non avevo notato la corruzione - l'ho risolto sopra. – Recurse
Questo è esattamente ciò di cui ho bisogno per accelerare il backup di un database abbastanza grande, ma non riesco a far funzionare il tuo esempio. Posso creare il FIFO, e se scarico alla pipe usando mysqldump funziona perfettamente. Tuttavia, se provo a scaricare il pipe usando SELECT ... INTO OUTFILE, ricevo un errore che "myfifo esiste già". –
Il motore di archiviazione FEDERATED? Non è il più veloce del gruppo, ma per una volta, accidentalmente, o piccole quantità di dati che farà. Questo presuppone che tu stia parlando di 2 server. Con 2 database su uno stesso server, sarà semplicemente:
INSERT INTO databasename1.tablename SELECT * FROM databasename2.tablename;
Grazie mille, non sono ancora sicuro Se i 2 database si trovano sullo stesso server o no. – Morano88
Questo è stato fantastico per la mia situazione. Saluti :) – Nick
Ha funzionato bene con Amazon RDS in cui non si ha accesso alla macchina sottostante che esegue l'istanza MySQL, escludendo le soluzioni che coinvolgono INFILE/OUTFILE. – Andz
È possibile utilizzare mysqldump
e mysql
(il client a riga di comando). Questi sono strumenti da riga di comando e nella domanda che scrivi non vuoi usarli, ma utilizzarli comunque (anche eseguendoli dal tuo codice) è il modo più semplice; mysqldump
risolve un sacco di problemi.
È possibile effettuare select
da un database e insert
all'altro, che è piuttosto facile. Ma se hai bisogno anche di trasferire lo schema del database (create table
s ecc.), Diventa un po 'più complicato, motivo per cui raccomando mysqldump
. Ma anche molti strumenti di amministrazione PHP-MySQL lo fanno, quindi puoi usarli o guardare il loro codice.
O forse è possibile utilizzare la replica MySQL.
Questo (seleziona, inserisce) funzionerà se i due database sono su 2 server diversi? No Voglio solo migrare dati, non creazioni di tabelle, ecc. – Morano88
Sì, avrai le connessioni tvo - per ogni server una - in una connessione esegui SELECT, quindi nell'altra INSERT con i dati che sono ritornati da quella SELECT . – Messa
Se abilitato la registrazione binaria sul server corrente (e hanno tutti i registri bin) è possibile replica di installazione per il secondo server
da http://dev.mysql.com/doc/refman/5.0/en/rename-table.html:
Finché due database si trovano sullo stesso file system, è possibile utilizzare RENAME TABLE per spostare una tabella da un database all'altro:
RENAME TABLE current_db.tbl_name TO other_db.tbl_name;
- 1. MySQL: selezionare i dati dal database tra due date
- 2. come trasferire stored procedure tra database di SQL Server 2005
- 3. Trasferire MySQL in SQLite
- 4. Come posso importare dati nel database mysql tramite mysql workbench?
- 5. Posso unire i dati da 2 diversi database DB2? (Come database collegati a SQL Server)
- 6. Come posso archiviare dati sensibili in un database MySQL?
- 7. Come spostare i dati tra 2 tabelle/con colonne diverse in diversi database
- 8. Come cercare i dati JSON in mysql?
- 9. primavera dati: rapporti tra 2 diverse fonti di dati
- 10. Mysql: eseguire il dump del database lungo i dati
- 11. Come trasferire i dati su una porta seriale?
- 12. Come posso condividere i modelli di mangusta tra 2 app?
- 13. In SpecFlow, come posso condividere i dati tra passaggi/funzionalità?
- 14. Sincronizzare i database MySQL locali con un database cloud
- 15. Come sincronizzare i dati tra diversi dispositivi
- 16. Come posso trasferire i dati da un gestore SOAP a un client Webservice?
- 17. Come recuperare i dati JSON da mysql?
- 18. Facebook PHP SDK - Memorizza i dati utente nel database MYSql
- 19. Dove mysql memorizza i dati?
- 20. Come vedo le differenze tra 2 dump MySQL?
- 21. Come importare i dati XBRL in MySQL?
- 22. Dati mancanti di migrazione del database MySQL
- 23. Rails, come migrare i dati dal database di sviluppo sqlite3 al database MySQL di produzione?
- 24. Come trasferire file tra AWS s3 e AWS ec2
- 25. Come inserire dati grezzi nel database mysql in laravel
- 26. Come posso trasferire un documento tra due app sullo stesso dispositivo iOS?
- 27. DirectX11: trasferire i dati da ComputeShader a VertexShader?
- 28. Come leggere i dati dal database SQLite?
- 29. Come posso condividere i dati tra attività Ant personalizzate?
- 30. Come importare dati da file di testo al database mysql
due database sullo stesso server o due database su server diversi? –
@Itay: non sono ancora sicuro che siano sullo stesso server o no? So che questo fa la differenza ma non mi è venuto in mente di chiedere loro.Lo farò domani – Morano88