Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1270 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Insérer des données avec une seule commande

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Insérer des données avec une seule commande

n°1428741
dexenium
Posté le 21-08-2006 à 17:24:41  profilanswer
 

Bonjour,
 
Je voudrais insérer dans une table (mailingliste) environ 20000 adresses que j'ai sous le format suivant :
 
adresse1@truc.com
adresse2@truc.com
adresse3@truc.com
adresse4@truc.com
adresse5@truc.com
etc...
 
Comment puis-je insérer ces adresses par blocs je suppose de 1000 par exemple dans ma table mailingliste à la suite de celles que j'ai déjà ?
 
J'ai pensé à une syntaxe du type :  
INSERT INTO `mailingliste` VALUES (' adresse1@truc.com'); mais je devrais modifier chaque adresse pour rajouter le INSERT INTO `mailingliste' etc...
 
Ma question est la suivante : existe-t-il une syntaxe du type  
INSERT INTO `mailingliste` VALUES ('adresse1@truc.com','adresse2@truc.com','adresse3@truc.com'); qui permettrai d'insérer plusieurs adresses à la fois (chacune dans un champ).  
Y a-t-il un nombre limite d'adresses pour cette requête ?
 
Merci pour vos conseils.

mood
Publicité
Posté le 21-08-2006 à 17:24:41  profilanswer
 

n°1428744
dlaumor
Posté le 21-08-2006 à 17:29:31  profilanswer
 

La première requete est la bonne.  
 
Pas possible avec la seconde
 
Tu peux faire un fichier SQL qui contient tes 20000 lignes à insérer.
 
INSERT INTO `mailingliste` VALUES (' adresse1@truc.com');
INSERT INTO `mailingliste` VALUES (' adresse2@truc.com');
...
 
Sinon il faut faire un fichier plat avec tes adresses et un SQLLoader, enfin ça dépend de ton SGBD.


Message édité par dlaumor le 21-08-2006 à 17:29:52
n°1428745
betsamee
Asterisk Zeperyl
Posté le 21-08-2006 à 17:30:03  profilanswer
 

si mysql tu peux faire  

Code :
  1. INSERT INTO mailingliste(nomchamp)
  2. VALUES (('adresse1@truc.com'),('adresse2@truc.com'),...,('adressen@truc.com'))


Message édité par betsamee le 21-08-2006 à 17:30:42
n°1428818
dexenium
Posté le 21-08-2006 à 18:13:30  profilanswer
 

Ah oui ça ça m'intéresse :

Citation :

INSERT INTO mailingliste(nomchamp) VALUES (('adresse1@truc.com'),('adresse2@truc.com'),...,('adressen@truc.com'))


Ok !
 
Ce qui me fait ch..r c'est d'avoir à insérer des caratères aux 20 000 adresses.
 
Avec Ultraedit je peux par exemple remplacer .com par .com'), mais pour ajouter le (' au début de l'adresse c'est galère à moins que se soit possible sous excel ?

n°1428824
mrbebert
Posté le 21-08-2006 à 18:20:12  profilanswer
 

Si MySQL, tu trouvera peut être des choses en cherchant dans la doc du côté de "LOAD DATA" [:figti]

n°1428826
betsamee
Asterisk Zeperyl
Posté le 21-08-2006 à 18:20:39  profilanswer
 

avec excel et une pitite macro tu peux facilement creer le buffer de te requete  
boucle sur chaque ligne et fait "('"& Cells(i,1) &"')," apres c'est deux trois ptites modifs manuelles et c est bon
EDIT : selon le format de ton fichier d entree tu peux comme indique utiliser LOAD DATA INFILE en precisant bien tes delimiteurs de champs/lignes


Message édité par betsamee le 21-08-2006 à 18:21:47
n°1428909
couak
Posté le 21-08-2006 à 19:20:57  profilanswer
 

et avec ultraedit tu peux faire des regex

n°1428941
dexenium
Posté le 21-08-2006 à 20:01:48  profilanswer
 

Bah je connais pas les regex ; c'est quoi :heink: ???

n°1428964
couak
Posté le 21-08-2006 à 20:53:32  profilanswer
 

lance l'aide d'ultraedit et regarde les "regular expression"
en francais ce sont les expressions régulières

n°1428994
dexenium
Posté le 21-08-2006 à 21:40:30  profilanswer
 

Oui c'est exactement ce que je cherchais :
 
$ va ajouter  '),   (en fin de ligne)
% va ajouter ('     (en début de ligne) + si je veux mon INSERT INTO etc...
 
Ensuite un simple copier/coller et j'envoie tout ça dans ma bdd !!!
 
Franchement génial cet ULTRAEDIT et merci à tous !!
 
 :jap:  :jap:  :jap:  :jap:  :jap:  :jap:  :jap:  :jap:  
 :hello:  :hello:  

mood
Publicité
Posté le 21-08-2006 à 21:40:30  profilanswer
 

n°1428995
dexenium
Posté le 21-08-2006 à 21:49:23  profilanswer
 

J'ai encore une question : que se passe t-il s'il y a déjà une adresse identique à une que j'ajoute ; est-elle ajoutée quand même, est-elle ignorée ?

n°1428998
betsamee
Asterisk Zeperyl
Posté le 21-08-2006 à 21:54:29  profilanswer
 

ca depend de la definition de ton champ "adresse" (si il tolere les doublons ou pas)
ca depend de ce que tu veux en faire mais si tu veux eviter les doublons je te conseille de regarder la syntaxe de la commande Replace into au lieu de INSERT INTO

n°1429014
dexenium
Posté le 21-08-2006 à 22:20:25  profilanswer
 

Tu veux dire qu'au lieu de  
INSERT INTO `mailingliste` VALUES (' adresse1@truc.com');
 
il vaudrait mieux mettre :
 
REPLACE INTO `mailingliste` VALUES (' adresse1@truc.com');  
 

n°1429016
betsamee
Asterisk Zeperyl
Posté le 21-08-2006 à 22:22:03  profilanswer
 

oui

n°1429030
dexenium
Posté le 21-08-2006 à 23:03:51  profilanswer
 

Ok nickel Merci !!! ;)

n°1429031
mrbebert
Posté le 21-08-2006 à 23:08:26  profilanswer
 

dexenium a écrit :

Tu veux dire qu'au lieu de  
INSERT INTO `mailingliste` VALUES (' adresse1@truc.com');
 
il vaudrait mieux mettre :
 
REPLACE INTO `mailingliste` VALUES (' adresse1@truc.com');

Je pense que le traitement des doublons dépendra de la définition de cette colonne. Si elle accepte les doublons, à mon avis, le REPLACE se comportera exactement comme le INSERT : il ajoutera un enregistrement sans se poser de questions [:figti]  

n°1429071
betsamee
Asterisk Zeperyl
Posté le 22-08-2006 à 07:43:19  profilanswer
 

mrbebert a écrit :

Je pense que le traitement des doublons dépendra de la définition de cette colonne. Si elle accepte les doublons, à mon avis, le REPLACE se comportera exactement comme le INSERT : il ajoutera un enregistrement sans se poser de questions [:figti]


oui c'est ce que je disais
mais si elle n'accepte pas les doublons l'INSERT echouera en cas de doublon alors que le REPLACE non


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Insérer des données avec une seule commande

 

Sujets relatifs
Trier des données qui sont sur 2 lignescommande getElementById
[FORUM] Insérer lien dans la signature[RCH]Liste de commande à travers des fichiers TXT
cosinus des données d'un tableau[excel vba] mise à jour données
Arguments en ligne de commandeQuelle solution de stockage de données pour application locale?
insérer un tableau dans un richtextboxArchivage de données
Plus de sujets relatifs à : Insérer des données avec une seule commande


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR