Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Débuter
Débuter Forum d'entraide pour débuter avec MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/07/2011, 15h11   #1
Invité de passage
 
Inscription : juin 2005
Messages : 23
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 23
Points : 1
Points : 1
Par défaut Scripter MySql dans un batch

Bonjour

Désolé pour le bas niveau mais bon je suis sur le forum "débuter" ...

J'ai un serveur Y à partir duquel je souhaite faire un import d'un fichier texte dans une table MySql.

1- De quoi ai-je besoin sur le serveur Y pour que la commande LOAD DATA FILE soit utilisable ?

2- Et après, quelle est la syntaxe de cette commande dans un fichier .bat pour faire ceci :
--> LOAD DATA INFILE toto.csv dans la table toto


Merci à vous,
lenco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 16h23   #2
Membre éclairé
 
Inscription : février 2005
Messages : 349
Détails du profil
Informations personnelles :
Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : février 2005
Messages : 349
Points : 358
Points : 358
Bonjour.


1) Vous avez besoin de la lib client mysql installable seule en sélectionnant personnalisé dans le packages d'installation du serveur mysql (il me semble) .

2) Le ligne de code sera du genre
Code :
1
2
 
mysql -h<serveur> -u<utilisateur> -p<password> -D<database> -e"LOAD DATA INFILE...."
Pour que l'exe mysql soit appelable sans préciser le chemin complet, il faut cocher la case "include in PATH" lors de l'installation.

Bon Week -End
__________________
La connaissance s'accroit lorsqu'on la partage.
overider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 16h29   #3
Invité de passage
 
Inscription : juin 2005
Messages : 23
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 23
Points : 1
Points : 1
J'ai bien essayé la commande mysql -h ...

Mais j'ai un message d'erreur access denied sur la base.


Qu'est ce qui coince ?


Merci,
lenco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2011, 13h34   #4
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 437
Points : 6 437
Le mot de passe, dans la ligne de commande, doit être collé au -p.
Exemple :
Code :
mysql -h 192.168.0.1 -u root -pmotdepasse ...
Sinon, jette également un œil dans la : http://mysql.developpez.com/faq/?page=ERREURS_CONNEXION
__________________
Rédacteur / Modérateur SGBD
Mes tutoriels et la FAQ MySQL

----------------------------------------------------
Pensez aux balises code et au tag
Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
ced est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 08h49   #5
Invité de passage
 
Inscription : juin 2005
Messages : 23
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 23
Points : 1
Points : 1
Précision j'arrive bien à me connecter sur le même serveur sur une autre base de donnée MySQL.

Mais ça coince avec la base de données que j'ai créée ...

Qu'est-ce que je dois vérifier pour avoir accès à la base de données ?


Merci,
lenco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 09h02   #6
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 437
Points : 6 437
Dans les droits sur la base que tu as créée, vérifie que l'utilisateur avec lequel tu te connectes est bien autorisé à se connecter.
Quelques infos supplémentaires sur le lien suivant : http://dev.mysql.com/doc/refman/5.0/...ss-denied.html

Donne-nous le message d'erreur...
__________________
Rédacteur / Modérateur SGBD
Mes tutoriels et la FAQ MySQL

----------------------------------------------------
Pensez aux balises code et au tag
Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
ced est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 10h02   #7
Invité de passage
 
Inscription : juin 2005
Messages : 23
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 23
Points : 1
Points : 1
L'utilisateur que j'ai créé est en ALL PRIVILEGES et j'obtiens ce message d'erreur :
Citation:
ERROR 1045 (28000) : Access denied for user '...' (using password : YES)
ça passe avec un autre utilisateur, j'ai donc un problème avec l'utilisateur qui porte le même nom que la base.

Je vais naviguer dans la FAQ ...


Merci,
lenco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 10h50   #8
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 437
Points : 6 437
Se connecte-t-il depuis une autre machine ?
Parce que les droits dépendent non seulement du nom de l'utilisateur, mais aussi de l'adresse IP depuis laquelle il se connecte (ce qu'on appelle le "host" dans MySQL). Il faut donner les privilèges à l'utilisateur depuis cette adresse IP.
__________________
Rédacteur / Modérateur SGBD
Mes tutoriels et la FAQ MySQL

----------------------------------------------------
Pensez aux balises code et au tag
Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
ced est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 10h55   #9
Invité de passage
 
Inscription : juin 2005
Messages : 23
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 23
Points : 1
Points : 1
A partir d'un même ordinateur vers le même serveur j'arrive à me connecter sur la base avec un autre utilisateur.

Donc le problème vient bien de l'utilisateur


J'ai vu que l'on pouvait réinitialiser les mots de passe, je vais tenter ...


Merci,
lenco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 16h41   #10
Invité de passage
 
Inscription : juin 2005
Messages : 23
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 23
Points : 1
Points : 1
Par défaut précision ...

J'avance, j'avance

J'arrive maintenant à me connecter à la base de donnée et à faire un load data local infile mais j'ai un problème sur la gestion du load.

J'ai créé une base de données qui ne contient qu'une seule table sur laquelle je n'ai pas de clé.
Donc forcément, quand il fait un load suivi d'un load, il intègre tout deux fois.
Il ne peut pas faire autrement car il n'y a pas de clé.

Ce que je souhaiterais, c'est faire en sorte qu'une même ligne soit la clé ou bien qu'un champ texte devienne clé.
Mais MySQL ne veut pas d'une clé sur un champ texte ...

Pistes ?


Thanks,
lenco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 17h30   #11
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 437
Points : 6 437
Si j'ai bien compris, cette table te sert juste de passage lors du chargement d'un fichier texte.
Et ce que tu souhaites, c'est éviter les doublons, c'est bien ça ?

Et le contenu de cette table, il est ensuite placé dans une autre table ?
__________________
Rédacteur / Modérateur SGBD
Mes tutoriels et la FAQ MySQL

----------------------------------------------------
Pensez aux balises code et au tag
Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
ced est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 07h51   #12
Invité de passage
 
Inscription : juin 2005
Messages : 23
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 23
Points : 1
Points : 1
En fait cette table me permet de faire des requêtes pour alimenter une application.

Ma table TOTO se met à jour par un LOAD DATA LOCAL INFILE qui traite des commandes.
Le fichier est composé des commandes depuis 2009 et se met à jour quotidiennement tout en conservant l'historique.

Mon pb c'est que le LOAD intègre le contenu du fichier et ensuite à chaque LOAD il intégère le contenu du fichier également.
Donc 45000 lignes + 45100 lignes + 45200 ...

Ce que je souhaite, c'est que ma table TOTO se mette à jour comme ça :
intégration des 45000 lignes et au deuxième LOAD intégration des 100 lignes nouvelles.
Mais je ne vois pas comment je peux faire ?


Merci,
lenco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 11h37   #13
Invité de passage
 
Inscription : juin 2005
Messages : 23
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 23
Points : 1
Points : 1
J'ai réussi à mettre une clé primaire sur le champs qui m'intéressait.

J'ai passé le champs de TEXT à CHAR et là j'ai pu mettre ce champ en clé primaire.


Du coup sur le LOAD DATA, j'ai mis IGNORE ce qui devrait me permettre de n'intégrer que les nouvelles lignes ...


Merci à vous,
lenco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 12h10   #14
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 437
Points : 6 437
Problème , alors ?
__________________
Rédacteur / Modérateur SGBD
Mes tutoriels et la FAQ MySQL

----------------------------------------------------
Pensez aux balises code et au tag
Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
ced est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 12h21   #15
Invité de passage
 
Inscription : juin 2005
Messages : 23
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 23
Points : 1
Points : 1
Par défaut :resolu:

Voilà la syntaxe pour le batch :

Citation:
mysql -h serveur -D base de donnée -u utilisateur -pmotdepasse -e "source fichier txt"
Pour windows, le chemin du fichier texte doit être sous cette forme :
d:/toto.txt

Et dans le fichier texte il faut écrire les commandes que l'on souhaite exécuter sur la base de données.


Merci,
lenco est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h05.


 
 
 
 
Partenaires

Hébergement Web