Arjuna Aircraft Ident.: F-MBSD | 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 :
- Option Explicit
- ' Changez uniquement cette ligne, afin de mettre le nom du driver ODBC, et le login/pass de la base
- Const DSN = "DSN=bidule;UID=root;pwd="
- ' Déclaration des constantes
- Const adSchemaTables = 20
- ' Déclaration des variables (non typées en VBS)
- Dim tablesCpt
- Dim linesCpt
- Dim cnx
- Dim rs
- Dim schema
- Dim fic
- Dim el
- Dim str
- Dim fso
- ' Initialisation des compteurs
- tablesCpt = 0
- linesCpt = 0
- ' Création de l'objet de connection
- Set cnx = CreateObject("ADODB.Connection" )
- cnx.Open DSN
- ' Création de l'objet recordset
- Set rs = CreateObject("ADODB.RecordSet" )
- Set rs.ActiveConnection = cnx
- ' Interrogation de la base afin d'obtenir son shema. Correspondra à un "select * from systables" sous SQL Server par exemple
- ' sauf que cette syntaxe générique fonctionnera avec n'importe quelle base de données.
- Set schema = cnx.OpenSchema(adSchemaTables)
- ' Création de l'objet de gestion des fichiers
- Set fso = CreateObject("Scripting.FileSystemObject" )
- ' Parcours des tables du schema
- Do While Not schema.EOF
- ' On ne prend en compte que les objets "TABLE" : on laisse de côté les vues et les tables système par exemple.
- If schema("TABLE_TYPE" ) = "TABLE" Then
- tablesCpt = tablesCpt + 1
- ' On crée le fichier CSV correspondant les données de la table en cours
- Set fic = fso.CreateTextFile(schema("TABLE_NAME" ) & ".csv", true)
- ' On interroge la table et on en récupère la liste des données
- rs.Open "select * from " & schema("TABLE_NAME" )
- str = ""
- ' Parcours des headers de la table, et on génère la première ligne du fichier CSV
- For Each el in rs.Fields
- str = str & Replace(el.Name, ";", "," ) & ";"
- Next
- fic.WriteLine(left(str, len(str) - 1))
- ' Parcours de chaque ligne de la table
- Do While Not rs.EOF
- linesCpt = linesCpt + 1
- str = ""
- ' Récupération des données, et conversion pour les rendre compatibles avec le format CSV
- For Each el in rs.Fields
- On Error Resume Next
- str = str & Replace(Replace(Replace(Replace(CStr("" & el.Value), ";", "," ), vbCr, "\n" ), vbLf, "" ), vbTab, "\t" ) & ";"
- If Err <> 0 Then
- ' Attention : Le type de données n'est pas supporté (BLOB, LONG, TEXT) ou on a trouvé une valeur nulle
- If isNull(el.Value) Then
- str = str & "NULL;"
- Else
- str = str & "#UNSUPPORTED DATA TYPE#;"
- End If
- Err.Clear
- End If
- On Error Goto 0
- Next
- ' Ecriture de la ligne dans le fichier CSV
- if len(str) > 1 then
- fic.WriteLine(left(str, len(str) - 1))
- else
- fic.WriteLine("" )
- end if
- ' Passage à la ligne suivante
- rs.MoveNext
- Loop
- rs.Close
- fic.Close
- Set fic = Nothing
- End If
- ' Passage à la table suivante
- schema.MoveNext
- Loop
- ' Fermeture et destruction des objets de la base de données et de gestion des fichiers.
- schema.Close
- cnx.Close
- Set fso = Nothing
- Set rs = Nothing
- Set schema = Nothing
- Set cnx = Nothing
- MsgBox(CStr(linesCpt) & " lignes réparties dans " & CStr(tablesCpt) & " ont été correctement exportées." )
|
|