English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In MySQL puoi utilizzareSELECT...INTO OUTFILEper esportare semplicemente i dati in un file di testo.
Nell'esempio seguente esporteremo i dati della tabella w3codebox_tbl nel file /tmp/w3codebox.txt:
mysql> SELECT * FROM w3codebox_tbl -> INTO OUTFILE '/tmp/w3codebox.txt';
Puoi impostare il formato specifico dell'output dei dati tramite l'opzione del comando, l'esempio seguente è l'esportazione in formato CSV:
mysql> SELECT * FROM passwd INTO OUTFILE '/tmp/w3codebox.txt' -> FIELDS TERMINATED BY ',' ENCLOSED BY '"' -> LINES TERMINATED BY '\r\n';
Nell'esempio seguente, viene generato un file con i valori separati da virgola. Questo formato può essere utilizzato da molti programmi.
SELECT a, b, a+b INTO OUTFILE '/tmp/result.text' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM test_table;
LOAD DATA INFILE è l'operazione inversa di SELECT ... INTO OUTFILE, la sintassi SELECT. Per scrivere i dati di un database in un file, utilizzare SELECT ... INTO OUTFILE, per leggere il file indietro nel database, utilizzare LOAD DATA INFILE.
La forma SELECT...INTO OUTFILE 'file_name' può scrivere le righe selezionate in un file. Il file viene creato sul host del server, quindi è necessario avere i permessi FILE per utilizzare questa sintassi.
L'output non può essere un file esistente. Per prevenire la manipolazione dei dati del file.
È necessario avere un account di accesso al server per recuperare il file. Altrimenti SELECT ... INTO OUTFILE non avrà alcun effetto.
Nel sistema UNIX, il file viene creato come leggibile e i permessi sono posseduti dal server MySQL. Questo significa che anche se è possibile leggere il file, potrebbe non essere possibile eliminarlo.
mysqldump è uno strumento di mysql utilizzato per il trasferimento di archiviazione dei database. Produce principalmente uno script SQL che contiene i comandi necessari per ricreare il database da zero, come CREATE TABLE, INSERT, ecc.
Per esportare i dati utilizzando mysqldump, è necessario utilizzare l'opzione --tab per specificare la directory del file di esportazione, che deve essere scrivibile.
Esempio di seguito, l'elenco dei dati della tabella w3codebox_tbl viene esportato nella directory /tmp:
$ mysqldump -u root -p --no-create-info \ --tab=/tmp w3codebox w3codebox_tbl password ********
Esportare i dati in formato SQL nel file specificato, come illustrato di seguito:
$ mysqldump -u root -p w3codebox w3codebox_tbl > dump.txt password ********
Il contenuto del file creato dai seguenti comandi è il seguente:
-- MySQL dump 8.23 -- -- Host: localhost Database: w3codebox --------------------------------------------------------- -- Versione del server 3.23.58 -- -- Struttura della tabella per la tabella `w3codebox_tbl` -- CREATE TABLE w3codebox_tbl ( w3codebox_id int(11) NOT NULL auto_increment, w3codebox_title varchar(100) NOT NULL default '', w3codebox_author varchar(40) NOT NULL default '', submission_date date default NULL, PRIMARY KEY (w3codebox_id), UNIQUE KEY AUTHORITY_INDEX (w3codebox_author) ) TYPE=MyISAM; -- -- Estrazione dei dati per la tabella `w3codebox_tbl` -- INSERT INTO w3codebox_tbl VALUES (1, 'Learn PHP', 'John Poul', '2007-05-24'); INSERT INTO w3codebox_tbl VALUES (2, 'Learn MySQL', 'Abdul S', '2007-05-24'); INSERT INTO w3codebox_tbl VALUES (3, 'JAVA Tutorial', 'Sanjay', '2007-05-06');
Se si desidera esportare i dati dell'intero database, è possibile utilizzare il seguente comando:
$ mysqldump -u root -p w3codebox > database_dump.txt password ********
Se si desidera eseguire il backup di tutti i database, è possibile utilizzare il seguente comando:
$ mysqldump -u root -p --all-databases > database_dump.txt password ********
--all-databases opzione è stata aggiunta a MySQL a partire dalla versione 3.23.12.
该方法可用于实现数据库的备份策略。
如果你需要将数据拷贝至其他的 MySQL 服务器上,你可以在 mysqldump 命令中指定数据库名及数据表。
在源主机上执行以下命令,将数据备份至 dump.txt 文件中:
$ mysqldump -u root -p database_name table_name > dump.txt password *****
如果完整备份数据库,则无需使用特定的表名称。
如果你需要将备份的数据库导入到MySQL服务器中,可以使用以下命令,使用以下命令你需要确认数据库已经创建:
$ mysql -u root -p database_name < dump.txt password *****
你也可以使用以下命令将导出的数据直接导入到远程的服务器上,但请确保两台服务器是相通的,是可以相互访问的:
$ mysqldump -u root -p database_name \ mysql -h other-host.com database_name
在上述命令中使用了管道来将导出的数据导入到指定的远程主机上。