Aller au contenu

Archivage ODBC

Le module d'archivage ODBC de DevI/O facilite l'enregistrement des données collectées par le serveur dans des bases de données relationnelles compatibles ODBC, telles que Microsoft SQL Server, PostgreSQL et Oracle. Cela permet une intégration flexible avec des systèmes nécessitant une compatibilité avec des environnements et architectures variés.

Prérequis

  • Installez le module d'archive DevioArchivesODBC
  • Installez le pilote ODBC approprié pour votre base de données.
  • Vérifiez que le pilote est correctement installé via l'application Sources de données ODBC (64 bits).

Warning

Pour les versions Dev I/O en 32 bits [depreciated], utilisez Sources de données ODBC (32 bits).


Configuration


Etape 1 : Configurer une source de donnée ODBC

  • Recherchez et lancez l'application Sources de données ODBC depuis le menu Démarrer.
  • Dans l'onglet DSN Système1, cliquez sur Ajouter.

  • Sélectionnez le pilote ODBC correspondant à votre base de données et cliquez sur Terminer.

  • Remplissez les champs requis tels que le nom de la source de données (DSN), la description, l'adresse du serveur, le nom de la base de données, etc.
  • Dans la fenêtre de configuration, cliquez sur Tester la connexion.

Résultat du test de connexion

Si la connexion est réussie, vous verrez un message de confirmation. Sinon, vérifiez les informations de configuration et essayez à nouveau.


Etape 2 : Création des tables

Le module d'archivage ODBC de DevI/O requiert la création de tables dans la base de données cible avant de pouvoir enregistrer les données. Cette section fournit des scripts SQL par défaut.

  • T_HISTO : Table où seront insérées les données horodatées (historiques).
  • T_RTHISTO : Table où seront insérées les données temps-réel des entités avec le flag Archive2.
  • T_RTLIVE : Table où seront mises à jour données temps-réel des entités Dernière valeur2 avec leur dernière valeur acquise
-- Création de la table des Historiques
CREATE TABLE T_HISTO (
    ulID BIGINT IDENTITY(1,1) NOT NULL,
    szDate DATETIME,
    usMseconds INT,
    szType VARCHAR(60),
    szName VARCHAR(122),
    ulHandle INT,
    szState VARCHAR(60),
    szValue VARCHAR(255),
    usState INT,
    usTypeRecord INT,
    szDateRecord DATETIME DEFAULT(GETDATE()),
    PRIMARY KEY (ulID)
);

-- Création de la table des Archivages temps réels (et statuts)
CREATE TABLE T_RTHISTO (
    ulID BIGINT IDENTITY(1,1) NOT NULL,
    szDate DATETIME,
    usMseconds INT,
    szType VARCHAR(60),
    szName VARCHAR(122),
    ulHandle INT,
    szState VARCHAR(60),
    szValue VARCHAR(255),
    usState INT,
    usTypeRecord INT,
    szDateRecord DATETIME DEFAULT(GETDATE()),
    PRIMARY KEY (ulID)
);

-- Création de la table des dernières valeurs des temps réels (et statuts)
CREATE TABLE T_RTLIVE (
    ulID BIGINT IDENTITY(1,1) NOT NULL,
    szDate DATETIME,
    usMseconds INT,
    szType VARCHAR(60),
    szName VARCHAR(122),
    ulHandle INT,
    szState VARCHAR(60),
    szValue VARCHAR(255),
    usState INT,
    usTypeRecord INT,
    szDateRecord DATETIME DEFAULT(GETDATE()),
    PRIMARY KEY (ulID)
);
-- Création de la table des Historiques
CREATE TABLE T_HISTO (
    ulID BIGSERIAL PRIMARY KEY,
    szDate TIMESTAMP,
    usMseconds INT,
    szType VARCHAR(60),
    szName VARCHAR(122),
    ulHandle INT,
    szState VARCHAR(60),
    szValue VARCHAR(255),
    usState INT,
    usTypeRecord INT,
    szDateRecord TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Création de la table des Archivages temps réels (et statuts)
CREATE TABLE T_RTHISTO (
    ulID BIGSERIAL PRIMARY KEY,
    szDate TIMESTAMP,
    usMseconds INT,
    szType VARCHAR(60),
    szName VARCHAR(122),
    ulHandle INT,
    szState VARCHAR(60),
    szValue VARCHAR(255),
    usState INT,
    usTypeRecord INT,
    szDateRecord TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Création de la table des dernières valeurs des temps réels (et statuts)
CREATE TABLE T_RTLIVE (
    ulID BIGSERIAL PRIMARY KEY,
    szDate TIMESTAMP,
    usMseconds INT,
    szType VARCHAR(60),
    szName VARCHAR(122),
    ulHandle INT,
    szState VARCHAR(60),
    szValue VARCHAR(255),
    usState INT,
    usTypeRecord INT,
    szDateRecord TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Création de la table des Historiques
CREATE TABLE T_HISTO (
    ulID NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    szDate TIMESTAMP,
    usMseconds NUMBER,
    szType VARCHAR2(60),
    szName VARCHAR2(122),
    ulHandle NUMBER,
    szState VARCHAR2(60),
    szValue VARCHAR2(255),
    usState NUMBER,
    usTypeRecord NUMBER,
    szDateRecord TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Création de la table des Archivages temps réels (et statuts)
CREATE TABLE T_RTHISTO (
    ulID NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    szDate TIMESTAMP,
    usMseconds NUMBER,
    szType VARCHAR2(60),
    szName VARCHAR2(122),
    ulHandle NUMBER,
    szState VARCHAR2(60),
    szValue VARCHAR2(255),
    usState NUMBER,
    usTypeRecord NUMBER,
    szDateRecord TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Création de la table des dernières valeurs des temps réels (et statuts)
CREATE TABLE T_RTLIVE (
    ulID NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    szDate TIMESTAMP,
    usMseconds NUMBER,
    szType VARCHAR2(60),
    szName VARCHAR2(122),
    ulHandle NUMBER,
    szState VARCHAR2(60),
    szValue VARCHAR2(255),
    usState NUMBER,
    usTypeRecord NUMBER,
    szDateRecord TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Etape 3 : Création DevioArchivesODBC.ini

  • Créez un fichier nommé DevioArchivesODBC.INI dans le répertoire bin de DevI/O ..\DevIO\Bin\
  • Copiez la configuration par défaut ci-dessous.
BASE:<ODBC_SOURCE_NAME>
USER:<DATABASE_USER>
PWD:<DATABASE_PASSWORD>
PERFORMANCE:0
HISTO_TABLE:T_HISTO
REAL_TIME_TABLE:T_RTHISTO
RT_LIVE_TABLE:T_RTLIVE
ARGUMENT:
DATE_FORMAT:%3$02u/%2$02u/%1$04u %4$02u:%5$02u:%6$02u
INSERT_REQUEST:insert into %1% (szDate,usMseconds,szType,szName,ulHandle,szState,szValue,usState,usTypeRecord) values('%2%',%18%,'%3%','%4%%5%%6%',%7%,'%8%','%10%',%9%,%11%)
UPDATE_REQUEST:update %1% set szDate='%2%',usMseconds=%18%,szType='%3%',ulHandle=%7%,szState='%8%',szValue='%10%',usState=%9% where szName='%4%%5%%6%' and usTypeRecord=%11%
MULTI_MODE:1
MULTI_BATCH_SIZE:100
BULK_MODE:0
BULK_BATCH_SIZE:10000
BULK_REQUEST:select szDate,usMseconds,szType,szName,ulHandle,szState,szValue,usState,usTypeRecord from %1%
BULK_TABLENAME:%1%
BIND_COLUMN_1:TIMESTAMP;%2%
BIND_COLUMN_2:SMALLINT;%18%
BIND_COLUMN_3:VARCHAR[255];%3%
BIND_COLUMN_4:VARCHAR[255];%4%%5%%6%
BIND_COLUMN_5:INTEGER;%7%
BIND_COLUMN_6:VARCHAR[255];%8%
BIND_COLUMN_7:VARCHAR[255];%10%
BIND_COLUMN_8:SMALLINT;%9%
BIND_COLUMN_9:SMALLINT;%11%
  • Remplacez les champs de connexion <ODBC_SOURCE_NAME>, <DATABASE_USER>, <DATABASE_PASSWORD selon les informations d'accès à votre base de données.

Etape 4 : Personnaliser les requêtes et le format de date

Comment personnaliser vos requêtes SQL

L'utilisation des wildcards %n% dans le fichier de configuration vous permettent de personnaliser vos requêtes SQL et de gérer les données de manière flexible. Elles sont particulièrement utiles pour les requêtes d'insertion INSERT_REQUEST et de mise à jour UPDATE_REQUEST.

Vous pouvez également personnaliser la propriété DATE_FORMAT selon les spécificités de votre base de données. Par défaut, le format %3$02u/%2$02u/%1$04u %4$02u:%5$02u:%6$02u formate la date de la manière suivante : DD/MM/YYYY hh-mm-ss.

Pour en savoir plus, consultez la liste des wildcards disponibles.

Wildcards disponibles
Wildcard Définition
%1% TableName
%2% FormattedDate (cf DATE_FORMAT)
- %1$04u : Year (4 digits, 0 filled unsigned integer)
- %2$02u : Month (2 digits, 0 filled unsigned integer)
- %3$02u : Day (2 digits, 0 filled unsigned integer)
- %4$02u : Hours (2 digits, 0 filled unsigned integer)
- %5$02u : Minutes (2 digits, 0 filled unsigned integer)
- %6$02u : Seconds (2 digits, 0 filled unsigned integer)
- %7% : Millisecs
%3% Type
%4% EquipmentName
%5% NameSeparator
%6% VariableName
%7% Handle
%8% StatusText
%9% StatusNumber
%10% Value
%11% RecordType
%12% Year
%13% Month
%14% Day
%15% Hours
%16% Minutes
%17% Seconds
%18% Millisecs
%19% Argument
%20% ServerName
%21% ComputerName
%22% OriginalTypeName
%23% FinalTypeName
%24% RecordTypeName
%25% RecordFamilyName
%26% Subsampling test passed
%27% Reserved
%28% Sql Value

Etape 5 : Vérification de la configuration

  • Redémmarrez le service Dev I/O DevioSvc
  • Consultez le dernier fichier de log ..\DevIO\Bin\log\DevioArchivesODBC<timestamp>.log

Résultat du test de connexion

Si la connexion est réussie, vous verrez un message de type DevIOArchivesDBOpen OK BASE<<ODBC_SOURCE_NAME>>. Sinon, vérifiez les informations de configuration et essayez à nouveau.


    • DSN Système : Utilisé par tous les utilisateurs de l'ordinateur. Choisissez cette option si plusieurs utilisateurs ou applications sur le même ordinateur doivent accéder à la source de données.
    • DSN Utilisateur : Utilisé uniquement par l'utilisateur qui l'a créé. Choisissez cette option si la source de données est destinée à un usage scrictement réservé avec le compte de service Dev I/O dédié devioUser, non compatible avec le compte de service SYSTEM

  1. Une entité avec le flag Archive et Dernière valeur activés
    DEVIOIELacbus_eqpt_new