English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

MySQL 导出数据

Dans MySQL, vous pouvez utiliserSELECT...INTO OUTFILEPour exporter simplement les données vers un fichier texte.

Utilisez l'expression SELECT ... INTO OUTFILE pour exporter les données

Dans l'exemple suivant, nous allons exporter les données de la table w3Les données de codebox_tbl sont exportées vers /tmp/w3Le fichier codebox.txt :

mysql> SELECT * FROM w3codebox_tbl 
    -> INTO OUTFILE '/tmp/w3codebox.txt';

Vous pouvez définir le format de sortie des données spécifiées par l'option de commande, l'exemple suivant est l'exportation de format CSV :

mysql> SELECT * FROM passwd INTO OUTFILE '/tmp/w3codebox.txt'
    -> FIELDS TERMINATED BY ',' ENCLOSED BY '"'
    -> LINES TERMINATED BY '\r\n';

Dans l'exemple suivant, un fichier est généré, les valeurs sont séparées par des virgules. Ce format peut être utilisé par de nombreux programmes.

SELECT a,b,a+b INTO OUTFILE '/tmp/result.text'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM test_table;

L'expression SELECT ... INTO OUTFILE a les attributs suivants:

  • LOAD DATA INFILE est l'opération inverse de SELECT ... INTO OUTFILE, syntaxe SELECT. Pour écrire les données d'une base de données dans un fichier, utilisez SELECT ... INTO OUTFILE, et pour lire le fichier dans la base de données, utilisez LOAD DATA INFILE.

  • La forme SELECT...INTO OUTFILE 'file_name' peut écrire les lignes sélectionnées dans un fichier. Ce fichier est créé sur le serveur hôte, donc vous devez avoir les permissions FILE pour utiliser cette syntaxe.

  • La sortie ne peut pas être un fichier existant. Cela empêche la modification des données du fichier.

  • Vous devez avoir un compte utilisateur pour accéder au serveur pour récupérer le fichier. Sinon, SELECT ... INTO OUTFILE ne fonctionnera pas.

  • Dans UNIX, le fichier est accessible après sa création, les permissions sont détenues par le serveur MySQL. Cela signifie que bien que vous puissiez lire le fichier, vous pourriez ne pas pouvoir le supprimer.

Exportez la table sous forme de données brutes

mysqldump est un utilitaire de mysql utilisé pour transférer des bases de données. Il génère principalement un script SQL qui contient les commandes nécessaires pour recréer la base de données à partir de zéro, telles que CREATE TABLE INSERT, etc.

Pour exporter des données en utilisant mysqldump, il est nécessaire d'utiliser  --l'option tab pour spécifier le répertoire du fichier à exporter, ce répertoire doit être accessible en écriture.

L'exemple suivant exporte la table w3codebox_tbl exporté /dans le répertoire tmp :

$ mysqldump -u root -p --no-create-info \
            --tab=/tmp w3codebox w3codebox_tbl
password ******

Exportez les données au format SQL

Exportez les données au format SQL dans le fichier spécifié, comme indiqué ci-dessous :

$ mysqldump -u root -p w3codebox w3codebox_tbl > dump.txt
password ******

Le contenu du fichier créé par les commandes suivantes est le suivant :

-- MySQL dump 8.23
--
-- Hôte: localhost    Base de données: w3codebox
---------------------------------------------------------
-- Server version       3.23.58
--
-- Table structure for table `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 AUTHOR_INDEX (w3codebox_author)
) TYPE=MyISAM;
--
-- Dumping data for table `w3codebox_tbl`
--
INSERT INTO w3codebox_tbl 
       VALUES (12007-05-24');
INSERT INTO w3codebox_tbl 
       VALUES (22007-05-24');
INSERT INTO w3codebox_tbl 
       VALUES (32007-05-06');

Si vous avez besoin d'exporter les données de la base de données entière, vous pouvez utiliser la commande suivante :

$ mysqldump -u root -p w3codebox > database_dump.txt
password ******

Si vous souhaitez sauvegarder toutes les bases de données, vous pouvez utiliser la commande suivante :

$ mysqldump -u root -p --tout-bases de données > database_dump.txt
password ******

--tout-databases 选项在 MySQL 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

在上述命令中使用了管道来将导出的数据导入到指定的远程主机上。