« MySQL/Importer et exporter » : différence entre les versions

Contenu supprimé Contenu ajouté
DannyS712 (discussion | contributions)
m <source> -> <syntaxhighlight> (phab:T237267)
Ligne 5 :
 
Pour exporter en SQL, le mot clé est <code>INTO OUTFILE</code> :
<sourcesyntaxhighlight lang=sql>
SELECT * FROM destinataire INTO OUTFILE '/tmp/test' WHERE id IN (41, 141, 260, 317, 735, 888, 1207, 2211);
</syntaxhighlight>
</source>
 
Le processus MySQL écrit lui-même le fichier, pas l'utilisateur. De plus, le fichier est stocké sur le serveur, pas le client.
Ligne 21 :
== Importer ==
Pour importer un fichier :
<sourcesyntaxhighlight lang=sql>
LOAD DATA INFILE '/tmp/test' INTO TABLE destinataire;
</syntaxhighlight>
</source>
 
{{attention|clear=left|Le fichier doit se trouver sur le serveur MySQL.}}
 
Options additionnelles :
<sourcesyntaxhighlight lang=sql>
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
</syntaxhighlight>
</source>
 
Pour spécifier la structure du document et la présence d'en-tête, on peut associer les colonnes de la base à des variables :
<sourcesyntaxhighlight lang=sql>
LOAD DATA LOCAL INFILE
'/tmp/test'
Ligne 54 :
@dummy
)
</syntaxhighlight>
</source>
Dans cet exemple, seule la seconde et troisième colonne du fichier sont stockées dans le champ ''name'' et ''phone_number''.
 
== Précisions sur le contenu ==
Pour importer un .sql créant un utilisateur et sa base de données, il faut savoir s'il existe déjà sur le serveur, car MySQL ne possède pas de <code>DROP USER IF EXISTS</code>. Par contre pour les bases ça fonctionne :
<sourcesyntaxhighlight lang=sql>
DROP DATABASE IF EXISTS `base1`;
CREATE DATABASE `base1` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Ligne 67 :
GRANT USAGE ON *.* TO 'utilisateur1'@'localhost' IDENTIFIED BY 'p@ssword1';
GRANT ALL PRIVILEGES ON `base1`.* TO 'utilisateur1'@'localhost';
</syntaxhighlight>
</source>
 
PS : si cette commande renvoie ''la commande drop database est désactivée'' avec PhpMyAdmin, modifier son <code>config.default.php</code> en passant <code>$cfg['AllowUserDropDatabase']</code> à <code>true</code>, et vider le cache du navigateur.