DatabaseImport

Importe des données depuis un fichier dans une table.

long  DatabaseImport(
   int           database,          // handle de la base de données obtenu avec DatabaseOpen
   const string  table,             // nom d'une table dans laquelle insérer des données
   const string  filename,          // nom du fichier contenant les données à importer
   uint          flags,             // combinaison de flags
   const string  separator,         // séparateur de données
   ulong         skip_rows,         // le nombre de lignes à ignorer
   const string  skip_comments      // chaîne de caractères identifiant les commentaires
   );

Paramètres

database

[in]  Handle de la base de données obtenu avec DatabaseOpen().

table

[in]  Nom d'une table dans laquelle les données du fichier seront ajoutées.

filename

[in]  Fichier CSV ou ZIP contenant les données à lire. Le nom peut contenir des sous-répertoires et est relatif au répertoire MQL5\Files.

flags

[in]  Combinaison des flags de l'énumération ENUM_DATABASE_IMPORT_FLAGS.

separator

[in]  Séparateur de données dans le fichier CSV.

skip_rows

[in]  Nombre de chaînes de caractères à ignorer lors de la lecture des données du fichier.

skip_comments

[in]  Chaîne de caractères utilisée pour désigner les commentaires. Si un des caractères de skip_comments est détecté au début d'une chaîne, celle-ci sera considérée comme étant un commentaire et ne sera pas importée.

Valeur de Retour

Retourne le nombre de chaînes importées ou -1 en cas d'erreur. Pour obtenir le code d'erreur, utilisez GetLastError(), les réponses possibles sont :

  • ERR_INVALID_PARAMETER (4003)              —  aucun nom de table spécifiée (chaîne vide ou NULL) ;
  • ERR_DATABASE_INTERNAL (5120)              — erreur interne de la base de données ;
  • ERR_DATABASE_INVALID_HANDLE (5121)   - handle invalide de la base de données.

 

Note

S'il n'y a pas de table nommée table, elle est générée automatiquement. Les noms et les types des champs dans la table créée sont définis automatiquement suivant les données du fichier.  

 

ENUM_DATABASE_IMPORT_FLAGS

Identifiant

Description

DATABASE_IMPORT_HEADER

La première ligne contient les noms des champs de la table

DATABASE_IMPORT_CRLF

CRLF (la valeur par défaut est LF) est considéré comme étant un retour à la ligne

DATABASE_IMPORT_APPEND

Ajoute des données à la fin d'une table

DATABASE_IMPORT_QUOTED_STRINGS

Des chaînes de caractères entre guillements (double quotes)

DATABASE_IMPORT_COMMON_FOLDER

Le fichier est stocké dans le répertoire commun à tous les terminaux clients terminals \Terminal\Common\File.

Exemple de lecture d'une table depuis un fichier créé avec du code via l'exemple de DatabaseExport :

//+------------------------------------------------------------------+
//| Fonction de démarrage du programme                               |
//+------------------------------------------------------------------+
void OnStart()
 {
  string csv_filename;
//--- récupèrle noms des fichiers texte à télécharger depuis le répertoire commun des terminaux clients
  string filenames[];
  if(FileSelectDialog("Sélectionner un fichier CSV pour télécharger une table"NULL,
                      "Text files (*.csv)|*.csv",
                      FSD_WRITE_FILE|FSD_COMMON_FOLDERfilenames"data.csv")>0)
   {
    //--- affiche le nom de chaque fichier sélectionné
    if(ArraySize(filenames)==1)
      csv_filename=filenames[0];
    else
     {
      Print("Erreur inconnue lors de la sélection du fichier. Code d'erreur "GetLastError());
      return;
     }
   }
  else
   {
    Print("Fichier CSV non sélectionné");
    return;
   }
//--- crée ou ouvre une base de données
  string db_filename="test.sqlite";
  int db=DatabaseOpen(db_filenameDATABASE_OPEN_READWRITE|DATABASE_OPEN_CREATE);
//--- vérifie si la table TEST existe
  if(DatabaseTableExists(db"TEST"))
   {
    //--- supprime la table TEST 
    if(!DatabaseExecute(db"DROP TABLE IF EXISTS TEST"))
     {
      Print("Echec de la suppression de la table TEST avec le code "GetLastError());
      DatabaseClose(db);
      return;
     }
   }
  //--- importe les entrées du fichier dans la table TEST
  long imported=DatabaseImport(db"TEST"csv_filenameDATABASE_IMPORT_HEADER|DATABASE_IMPORT_COMMON_FOLDER|DATABASE_IMPORT_APPEND";"0NULL);
  if(imported>0)
   {
    Print(imported," lignes importées dans la table TEST");
    DatabasePrint(db,"SELECT * FROM TEST",DATABASE_PRINT_NO_INDEX);
   }
  else
    {
     Print("Echec de DatabaseImport(). Erreur ",GetLastError());
    }
//--- ferme la base de données
  DatabaseClose(db);
  PrintFormat("Base de données : %s fermée"db_filename);
 }

 

Voir aussi

DatabaseOpen, DatabasePrint