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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  récupérer les parametre d'un table MySQL avec VB

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

récupérer les parametre d'un table MySQL avec VB

n°1048820
mick84m
Posté le 15-04-2005 à 15:52:55  profilanswer
 

bonjour,
 
je développe une applicationn en vb6 avec une base de donné MySQL 4.1.1
j ai besoin de récupérer les infos concernant les tables : nom de la table, nom des champs, le type du champs, NOT NULL (ou pas), la clé primaire....
 
quels criteres dois-je selectionner dans ma requete??

mood
Publicité
Posté le 15-04-2005 à 15:52:55  profilanswer
 

n°1048895
Arjuna
Aircraft Ident.: F-MBSD
Posté le 15-04-2005 à 17:03:31  profilanswer
 

Essaie ça (c'est du VBS, ça demande adaptation)
 
C'est un script que j'avais fait à mon taff pour récupérer les infos de bases divers (Access, SQL Server, MySQL et PostGre). Ca à l'air de marcher quelque soit le DSN utilisé.
Attention cependant : là le script extrait les données des tables pour les mettres dans des fichiers d'import SQL. Faut donc bidouiller un peu pour récupérer ce que tu veux ;)
 

Code :
  1. Option Explicit
  2. ' Changez uniquement cette ligne, afin de mettre le nom du driver ODBC, et le login/pass de la base
  3. Const DSN = "DSN=bidule;UID=root;pwd="
  4. ' Déclaration des constantes
  5. Const adSchemaTables = 20
  6. ' Déclaration des variables (non typées en VBS)
  7. Dim tablesCpt
  8. Dim linesCpt
  9. Dim cnx
  10. Dim rs
  11. Dim schema
  12. Dim fic
  13. Dim el
  14. Dim str
  15. Dim fso
  16. ' Initialisation des compteurs
  17. tablesCpt = 0
  18. linesCpt = 0
  19. ' Création de l'objet de connection
  20. Set cnx = CreateObject("ADODB.Connection" )
  21. cnx.Open DSN
  22. ' Création de l'objet recordset
  23. Set rs = CreateObject("ADODB.RecordSet" )
  24. Set rs.ActiveConnection = cnx
  25. ' Interrogation de la base afin d'obtenir son shema. Correspondra à un "select * from systables" sous SQL Server par exemple
  26. ' sauf que cette syntaxe générique fonctionnera avec n'importe quelle base de données.
  27. Set schema = cnx.OpenSchema(adSchemaTables)
  28. ' Création de l'objet de gestion des fichiers
  29. Set fso = CreateObject("Scripting.FileSystemObject" )
  30. ' Parcours des tables du schema
  31. Do While Not schema.EOF
  32.    ' On ne prend en compte que les objets "TABLE" : on laisse de côté les vues et les tables système par exemple.
  33.    If schema("TABLE_TYPE" ) = "TABLE" Then
  34.       tablesCpt = tablesCpt + 1
  35.       ' On crée le fichier CSV correspondant les données de la table en cours
  36.       Set fic = fso.CreateTextFile(schema("TABLE_NAME" ) & ".csv", true)
  37.       ' On interroge la table et on en récupère la liste des données
  38.       rs.Open "select * from " & schema("TABLE_NAME" )
  39.       str = ""
  40.       ' Parcours des headers de la table, et on génère la première ligne du fichier CSV
  41.       For Each el in rs.Fields
  42.          str = str & Replace(el.Name, ";", "," ) & ";"
  43.       Next
  44.       fic.WriteLine(left(str, len(str) - 1))
  45.       ' Parcours de chaque ligne de la table
  46.       Do While Not rs.EOF
  47.          linesCpt = linesCpt + 1
  48.          str = ""
  49.          ' Récupération des données, et conversion pour les rendre compatibles avec le format CSV
  50.          For Each el in rs.Fields
  51.             On Error Resume Next
  52.             str = str & Replace(Replace(Replace(Replace(CStr("" & el.Value), ";", "," ), vbCr, "\n" ), vbLf, "" ), vbTab, "\t" ) & ";"
  53.             If Err <> 0 Then
  54.               ' Attention : Le type de données n'est pas supporté (BLOB, LONG, TEXT) ou on a trouvé une valeur nulle
  55.               If isNull(el.Value) Then
  56.                  str = str & "NULL;"
  57.               Else
  58.                  str = str & "#UNSUPPORTED DATA TYPE#;"
  59.               End If
  60.               Err.Clear
  61.             End If
  62.             On Error Goto 0
  63.          Next
  64.          ' Ecriture de la ligne dans le fichier CSV
  65.          if len(str) > 1 then
  66.             fic.WriteLine(left(str, len(str) - 1))
  67.          else
  68.             fic.WriteLine("" )
  69.          end if
  70.          ' Passage à la ligne suivante
  71.          rs.MoveNext
  72.       Loop
  73.       rs.Close
  74.       fic.Close
  75.       Set fic = Nothing
  76.    End If
  77.    ' Passage à la table suivante
  78.    schema.MoveNext
  79. Loop
  80. ' Fermeture et destruction des objets de la base de données et de gestion des fichiers.
  81. schema.Close
  82. cnx.Close
  83. Set fso = Nothing
  84. Set rs = Nothing
  85. Set schema = Nothing
  86. Set cnx = Nothing
  87. MsgBox(CStr(linesCpt) & " lignes réparties dans " & CStr(tablesCpt) & " ont été correctement exportées." )

n°1050423
mick84m
Posté le 18-04-2005 à 08:43:03  profilanswer
 

merci je vais essayer, je te tiens au courant

n°1050444
mick84m
Posté le 18-04-2005 à 09:28:21  profilanswer
 

merci pour ton aide, mais récupérer les occurences de la tables je le fais déjà...
ce qu il me faut c'est les paramètres des tables genre nombre et nom des champs, le type de donnée (text, int, bool,...), valeur par défaut, ...

n°1050489
Arjuna
Aircraft Ident.: F-MBSD
Posté le 18-04-2005 à 10:48:53  profilanswer
 

Mise à part les valeurs par défaut, mon script récupère déjà le type et le nom des champs :o (par contre, les types sont sous forme numérique, et correspondent à des constantes ADO, c'est à dire que ce sont les types "génériques" qui sont donnés)

n°1051903
mick84m
Posté le 19-04-2005 à 10:53:27  profilanswer
 

ok j ai trouvé mon bonheur avec  
 
show create table <matable>
il me donne l export de la crétaion de base.
mais ca ne donne pas les INSERT INTO...
connais tu une commande mysql me permettant de les obtenir, car j utilise une procedure qui est vraiment galere a gerer...
 
si qql un peu tm aider... merci

n°1052191
Arjuna
Aircraft Ident.: F-MBSD
Posté le 19-04-2005 à 14:18:55  profilanswer
 

Mon truc le fait :o

n°1052194
Arjuna
Aircraft Ident.: F-MBSD
Posté le 19-04-2005 à 14:19:17  profilanswer
 

(sauf qu'il fait pas des insert into, mais des fichiers CSV, ça demande 30 secondes à modifier)

n°1052448
mick84m
Posté le 19-04-2005 à 16:23:58  profilanswer
 

y a un probleme avec les fichier CSV c est qu ils sont carrément plus volumineux que des fichiers text...de plus ma table contient plus de 300 000 enregistrements, et c est vraiment pas pratique a manipuler...si tu vois ce que j veux dire.
cette table n est qu une table de test, la vrai contient des millions d enregistrements...

n°1052569
Arjuna
Aircraft Ident.: F-MBSD
Posté le 19-04-2005 à 17:20:27  profilanswer
 

Rien compris.
 
Déjà un fichier CSV, c'est au contraire le format d'extraction le plus petit possible (à côté d'un fichier à pas fixe, le nombre de caractères supplémentaires est minime).
Ensuite, tu demandes à générer des requêtes "INSERT" à la place du CSV, ce qui est au TRES GRAND MINIMUM deux fois plus volumineux qu'un CSV.
 
Comprend rien à ton truc.
 
Le CSV, c'est pas du XML hein :o

mood
Publicité
Posté le 19-04-2005 à 17:20:27  profilanswer
 

n°1053178
mick84m
Posté le 20-04-2005 à 09:51:26  profilanswer
 

c est pas grave merci de ton aide, j ai trouvé une autre solution pour contourné ce problème.
 
merci, bon courage pour la suite


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

  récupérer les parametre d'un table MySQL avec VB

 

Sujets relatifs
récupérer les parametre d'un table MySQL avec VB[resolu][MYSQL] CREATE VIEW ???
Test sur un mysql_fetch_arrayInsertion de données mySQL vers Excel
[Mysql] Erreur avec des fichiers .ibd[MySQL] Licence commercial ou pas ?
Plus de sujets relatifs à : récupérer les parametre d'un table MySQL avec VB


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