Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Définition :
Cette fonction permet d’intégrer le contenu d’un fichier au format CSV dans une table de la base de données de l’ERP passée en paramètre.

...

  1. La chaîne 2013-08-29 12.10.20 de représentation d’une date et heure dans un fichier CSV doit être décrite de la manière suivante dans la section [FileDescription] :

    image-20240103-124817.png
  2. La chaîne 20130829 121020 doit être décrite de la manière suivante :

    image-20240103-124834.png
  3. La chaîne 29/08/2013 12:10:20 doit être décrite de la manière suivante :

    image-20240103-124947.png
Note

Si le fichier contient des colonnes avec uniquement la date et d’autres avec la date et heure, le traitement de lecture des informations ne tiendra pas compte du format des heures pour les colonnes avec uniquement les dates.

Il est important que toutes les colonnes de type date et heure d’un même fichier respectent le même format.

La section [FileColumns] du fichier mis en 3ème paramètre :

Elle permet de préciser la largeur des colonnes présentes dans le fichier dans le cas où celui-ci est décrit comme ayant des largeurs fixes.
Si le fichier contient en première ligne les entêtes des colonnes, il convient alors de reprendre les libellés des colonnes pour indiquer la largeur de chacune d’elles.
Si le fichier ne contient pas de ligne d’entête pour les colonnes, il faut alors utiliser un indice pour indiquer le numéro de colonne concerné. Cet indice est 1 pour la première colonne, 2 pour la deuxième, etc …

Exemple de fichiers, avec une ligne d'entête :

...

Exemple de fichiers, sans ligne d'entête :

...

La section [ColumnsMapping] du fichier mis en 3ème paramètre :

La section [ColumnsMapping] permet de lier les colonnes du fichier avec celles de la table de destination.
Elle consiste à associer le nom ou l’indice de la colonne du fichier source avec le nom de la colonne de la table comme le montre l’exemple ci-dessous.

A gauche le nom de la colonne dans le fichier, à droite le nom de la colonne dans la table

...

Cette section est nécessaire quand les noms des colonnes du fichier ne correspondent pas à ceux de la table de destination ou quand les colonnes du fichier n’ont pas de nom et que l’ordre des colonnes du fichier ne correspond pas à celui des colonnes de la table.
Cette section n’est pas obligatoire et nécessaire si :

  • Les noms des colonnes du fichier correspondent au nom des colonnes de la table : Le mappage se fera automatiquement à partir du nom des colonnes

  • Les noms des colonnes ne sont pas présents dans le fichier et l’ordre des colonnes du fichier correspond à celui de la table de destination : Le mappage se fera en mettant dans la première colonne de la table la première colonne du fichier, dans la deuxième colonne de la table la deuxième colonne du fichier, et ainsi de suite pour toutes les colonnes du fichier et celles de la table.

La section [TableDescription] du fichier mis en 3ème paramètre :

La section [TableDescription] permet de spécifier les actions à mener sur la table de destination pour vider ou non la table avant d’insérer les données du fichier et le nombre de requêtes d’insertion par instruction envoyée au serveur SQL.
Cette section n’est pas obligatoire. Si elle n’est pas présente, le traitement d’import des données du fichier source dans la table de destination ne videra pas la table avant l’insertion et minimisera le nombre de commandes SQL envoyées au serveur.

...

  • ClearTableBeforeInsert : Permet d’indiquer si la table doit être vidée avant d’insérer les données du fichier source : 1 = oui, 0=non.
    Par défaut, la table n’est pas vidée.

  • UseTruncateTabletoClear : Permet d’indiquer d’utiliser la commande SQL ‘TRUNCATE TABLE’ pour vider la table au lieu de la commande ‘DELETE’. La commande Truncate est plus rapide et moins consommatrice de ressources SQL dans le journal de la base de données. Utiliser 1 pour indiquer l’utilisation de la commande ‘Truncate’. Par défaut la commande ‘Delete’ est utilisée.

  • NbLinePerQuery : Permet d’indiquer le nombre de lignes du fichier source à envoyer par lot d’instruction SQL exécuté sur le moteur de base de données de l’ERP.
    Si la valeur de la propriété est à zéro (valeur par défaut), le traitement d’import constituera une commande SQL avec autant de commandes INSERT qu’il lui est possible d’ajouter en fonction de la taille maximale autorisée qu’une commande SQL peut contenir (par défaut cette limite est fixée à 65000 caractères).
    Le fonctionnement par défaut fixé permet d’optimiser les performances d’exécution de la commande d’insertion en minimisant le nombre d’échange entre le poste et le serveur SQL. En revanche, en cas d’erreur de syntaxe SQL lors de l’insertion comme par exemple un mauvais formatage de la date ou une donnée manquante obligatoire, celle-ci portera sur l’ensemble des requêtes INSERT présentes dans la commande envoyée au serveur.
    Donc en cas d’erreur sur des données présentes dans le fichier source, il sera intéressant de positionner cette propriété à 1 pour limiter l’instruction SQL à une seule instruction INSERT et ainsi obtenir la ligne du fichier source qui pose problème lors de l’insertion des données dans la table.

L’exemple ci-dessous indique au traitement de vider la table avant l’insertion des données en utilisant l’instruction ‘TRUNCATE TABLE’ et d’envoyer les lignes du fichier une par une dans la table.

...

Les valeurs de retour :

La fonction retourne 0 quand aucune erreur n’a été détectée lors du traitement d’import des données du fichier source dans la table de destination.
Si une erreur a été détectée, la fonction retournera une valeur différente de 0 :
=> 11001 : Le fichier source est introuvable.
=> 11003 : Impossible d’ouvrir le fichier source.
=> 11004 : Le nom du fichier source est vide.
=> 11005 : Aucune colonne définie pour le fichier source.
=> 11006 : Les colonnes n’ont pas de largeur définie
=> 12001 : La table de destination ne commence pas par GPSQL. Ou [GPSQL].
=> 12002 : La table de destination n’existe pas dans la base de données de l’ERP.
=> 12003 : Une erreur SQL s’est produite lors de l’exécution de l’instruction d’insertion des données dans la table de destination

Exemple de paramétrage :

Code Block
SIF("Articles.csv","GPSQL.ABArticles","FICHIER=ParamSIF.txt")