Page 1 sur 1

load data

Posté : 05 juin 2005, 14:18
par fab101
Bonjour

Voila j'essai d'importer des données dans la base mysql
ainsi j'effectue la requete suivante
load data infile "test.txt" into table cd.cd;

mais j'ai une erreur qui dit qu'il ne trouve pas le fichier
test.txt

Je ne comprend pas pourquoi ca marche pas
Merci

Posté : 05 juin 2005, 14:36
par ouckileou
ben c'est peut-être parcequ'il ne trouve pas le fichier :)

c'est un problème MySQL j'imagine, ce serait tout de même bien de préciser

où se trouve ton fichier ?
tu as essayé de lui passer un chemin absolu ?

car je vois ça :
Lorsque les fichiers de données sont sur le serveur, celui-ci utilise les règles suivantes :

*

Si un chemin absolu est fourni, le serveur utilise le chemin tel quel.
*

Si un chemin relatif est fourni, avec un ou plusieurs éléments de dossiers, le serveur recherche le fichier relativement à son dossier de données.
*

Si le fichier n'a pas d'éléments de dossier, le serveur recherche les données dans le dossier de base de données courante.

Notez que ces règles font qu'un fichier tel que ./myfile.txt est lu dans le dossier de données du serveur, alors que s'il est nommé myfile.txt, il sera lu dans le dossier de base de données courante. Par exemple, la commande LOAD DATA suivante lit le fichier donnees.txt dans le dossier de la base db1 car db1 est la base de données courante, même si la commande charge explicitement le fichier dans la base de données db2 :
http://dev.mysql.com/doc/mysql/fr/load-data.html

Posté : 05 juin 2005, 14:44
par Invité
salut
merci pour ta reponse
Voila j'essai d'importer des données dans la base mysql
oui j'ai mis que c'etait mysql

le fichier se trouve dans c:\mysql\data\cd
la ou se trouve la base et il me dit qu'il ne trouve pas le fichier a cet endroit

Posté : 05 juin 2005, 14:48
par ouckileou
désolé je pensais mettre mysql dans le titre et je n'avais pas vu dans ton message :oops:

à part te suggérer de lui passer un chemin absolu, je ne sais pas trop quoi te suggérer d'autre pour le coup

désolé

Posté : 05 juin 2005, 17:19
par fab101
Salut

pas grave

j'ai esaye de passer avec le chemin absolue mais ca ne marche toujours pas

j'ai ecrit comme ca

Code : Tout sélectionner

load data infil"\mysql\data\cd\texte.txt" into table cd.cd;
Je me suis peut etre trompe dans la syntaxe
[/quote]

Posté : 06 juin 2005, 09:23
par zeus
la forme de la commande LOAD DATA INFILE est la suivante :

Code : Tout sélectionner

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE] INTO TABLE tbl_name [FIELDS [TERMINATED BY '\t'] [[OPTIONALLY] ENCLOSED BY ''] [ESCAPED BY '\\' ] ] [LINES [STARTING BY ''] [TERMINATED BY '\n'] ] [IGNORE number LINES] [(col_name,...)]
N'oublie pas que si ton fichier est formaté différemment de :

val1.1;val1.2;val1.3
val2.1;val2.2;val2.3
val3.1;val3.2;val3.3

c'est à dire un ; entre les champs et un \r\n pour changer de ligne, il faut que tu spécifie les caratères !!!!

Posté : 07 juin 2005, 11:39
par Damien
Il faut utiliser des / dans le chemin (au lieu des \).

Donc plutôt :
c:/mysql/data/cd/test.txt