Page 1 sur 1
					
				[EX] Convertir fichier CSV en base SQLite
				Posté : ven. 29 mai 2015 12:29
				par Hugues
				Bonjour,
Voici un petit script pour convertir un fichier en base SQLite (plus pratique pour executer des requêtes ^^).
Au lancement, un fichier "Config.ini" sera généré automatiquement sous "C:\VotreUser\CSVToSQLite".
Dans se fichier sont stokés les chemins par défaut de la boîte de dialogue d'ouverture de votre fichier csv à convertir et où sera enregistrée votre base SQLite.
Les emplacements par défaut sont "C:\temp", après vous pouvez modifier les emplacements directement dans le Config.ini.
Il vous faut télécharger sur le net le fichier "sqlite3.dll" à mettre sous la racine du script 
http://cjoint.com/?EEDmBHVVWp0.
► Afficher le texte
Code : Tout sélectionner
;==[Includes]===================================================================================================
#include <SQLite.au3>
#include <SQLite.dll.au3>
;==[Variables Globales]=========================================================================================
Global $sLocalSQLiteDll = @ScriptDir & "\sqlite3.dll"
Global $CSVFilePathToConvert, $aArrayCSVHeader, $SQLite
_Ini()
_InitSql()
_ConversionCSVToSQLite()
Func _Ini()
    If FileExists(@UserProfileDir & "\CSVToSQLite") = 0 Then
        DirCreate(@UserProfileDir & "\CSVToSQLite")
        _FileCreate(@UserProfileDir & "\CSVToSQLite\Config.ini")
        IniWriteSection(@UserProfileDir & "\CSVToSQLite\Config.ini",  "User", "")
        IniWrite(@UserProfileDir & "\CSVToSQLite\Config.ini", "User", "$CSVFilePathToConvert", "C:\temp")
        IniWrite(@UserProfileDir & "\CSVToSQLite\Config.ini", "User", "$SQLite", "C:\temp")
    EndIf
    $SQLite = IniRead(@UserProfileDir & "\CSVToSQLite\Config.ini", "User", "$SQLite", "/!\ Fichier Config.ini erroné /!\")
    $SQLite = $SQlite & "\MySQLiteBase.SQLite"
    $CSVFilePathToConvert = IniRead(@UserProfileDir & "\CSVToSQLite\Config.ini", "User", "$CSVFilePathToConvert", "/!\ Fichier Config.ini erroné /!\")
EndFunc     ;==>_IniUser
Func _CSVChoice()
    Local $Path = FileOpenDialog("Choisir le fichier csv à convertir en base SQLite", $CSVFilePathToConvert, "CSV (*.csv)", 1)
    If @error Then Exit
    Return $Path
EndFunc     ;==>_CSVChoice
Func _ConversionCSVToSQLite()
    $MyCSVFile = _CSVChoice()
    Dim $SQLiteHeader
    ;Récupération de la première ligne du fichier *.csv
    _FileReadToArray($MyCSVFile, $aArrayCSVHeader)
    $SQLiteHeader = StringReplace($aArrayCSVHeader[1], ";", ",")        ;Remplacement des ";" par ","
    _SQLite_Open($SQLite)
    If @error > 0 Then Exit MsgBox(16, "SQLite Error", "Impossible de créer la Base de donnée!")
    _SQLite_Exec(-1, "CREATE TABLE IF NOT EXISTS MyTableSQLite (" & $SQLiteHeader & ");")
    ;On insère les valeurs
    If $aArrayCSVHeader[0] < 2 Then
        MsgBox(16, "", "Aucune valeur dans le fichier csv")
    Else
        For $i = 2 To UBound($aArrayCSVHeader) - 1
            $aArrayCSVHeader[$i]=StringReplace($aArrayCSVHeader[$i], ";", ", ")     ;Remplacement des ; par ,
            $aArrayCSVHeader[$i]=StringReplace($aArrayCSVHeader[$i], '"', "'")      ;Remplacement des "
            _SQLite_Exec(-1, "Insert Into MyTableSQLite (" & $SQLiteHeader & ") VALUES(" & $aArrayCSVHeader[$i] & ");")
        Next
    EndIf
EndFunc     ;==>_CreateSQLite
Func _InitSql()
    _SQLite_Startup($sLocalSQLiteDll, False, 1)
    If @error Then
        MsgBox(0, "Fichier manquant", "Le fichier SQLite3.dll est introuvable!")
        Exit
    EndIf
    $Base_SQLite = _SQLite_Open($SQLite)
    If @error > 0 Then
        MsgBox(16, "SQLite Erreur", "La base ne peut être chargée!")
        Exit
    EndIf
    OnAutoItExitRegister("_Exit_SQLite")
EndFunc     ;==>_InitSql
Func _Exit_SQLite()
    _SQLite_Close()
    _SQLite_Shutdown()
EndFunc     ;==>_Exit_SQLite