Salut Yanis97.

Envoyé par
Yanis97
Malheureusement je ne peux pas utiliser la commande LOAD DATA LOCAL à cause de ma version de MYSQL.
J'ai la version MySql 5.6.26 ! J'utilise le 'load data local' depuis longtemps et sans problème. Et je ne comprends pas bien vos difficultés avec 'load data local'.
Avez-vous essayé d'adapter l'exemple que j'ai donné ?
CSV signifie 'Comma-separated values', c'est-à-dire que la virgule est le caractère séparateur des valeurs.
Vous devez d'abord définir comment vous allez interpréter ce que vous mettez dans le fichier 'csv'.
La virgule est le caractère qui sépare les différentes valeurs dans la ligne du fichier 'CSV'.
Les guillemets servent à encadrer les valeurs.
L'anti-slash sert à définir le caractère d'échapement lorsqu'on veut qu'un caractère ne soit pas interpréter autrement.
Par exemple aujourd'hui s'écrit ainsi : "aujourd\'hui".
L'apostrophe risque d'être interprété comme une marque de début ou de fin de chaine de caractères.
LINES TERMINATED BY '\r\n'
Ceci est le saut de ligne qui marque la fin de la ligne dans le fichier 'CSV'.
Votre fichier doit être structué ainsi :
1 2 3
| "1","un"
"2","deux"
"3","aujourd\'hui" |
Si par inadvertance, dans une chaîne de caractères, vous avez une virgule, vous avez deux solutions possibles :
1) mettre un anti-slash devant la virgule afin qu'elle ne soit pas interprété comme séparateur des valeurs.
2) mettre autre chose, comme un point-virgule, à la condition que ce caractères ne se retrouvent pas dans vos chaînes de caractères.
Sinon, il existe un utilitaire qui permet de faire un 'load data local' : c'est MySqlImport.
En ligne de commande, donc sous windows, voici un exemple de paramétrage :
mysqlimport --verbose --force --delete --fields-optionally-enclosed-by=\" --fields-terminated-by=, --fields-escaped-by=\\ --lines-terminated-by=\r\n --local base test.txt
Le nom de ma base de données se nomme 'base'. Oui, je sais, c'est pas très original.
Le nom du fichier 'test' à charger doit être aussi celui de la table mysql.
Sous windows, la fin de ligne est '\r\n'. Sous linux, je suppose que c'est '\n'.
@+
Partager