Accueil     Recherche | Plan     Technique | Liens | Actualités | Formation | Emploi | Forums | Base  
dossier cerig.efpg.inpg.fr 
 
Vous êtes ici : Accueil > La technique > Internet et le Web > Site Web : analyse du trafic et mesure de l'audience > La procédure d'importation   Révision : 22 février 2005
 
Page précédente
Page précédente
Site Web : analyse du trafic
et mesure de l'audience
Page suivante
  Page suivante  
Florent BERLIAT et Jean-Claude SOHM (CERIG-EFPG)
(07 juin 2004)

IX - La procédure d'importation

IX-1- Introduction

Tous les SGBD dignes de ce nom offrent la possibilité d'importer des données qui ne sont pas enregistrées dans leur format propriétaire. Cette possibilité concerne d'abord les données provenant d'un SGBD concurrent, mais aussi toutes les données susceptibles d'être introduites dans une table. La propriété caractéristique d'une table de SGBD est que toutes les cellules d'une même colonne ont le même format. Le contenu du fichier journal appartient à cette catégorie, à l'exception des cinq lignes d'en-tête. Il peut donc être importé dans un SGBD, à condition de remplacer son extension ".log" en ".txt". En effet, les SGBD ne reconnaissent pas les fichiers log comme des fichiers texte.

Chaque SGBD a sa propre méthode d'importation. Dans Access, il existe un module d'importation dont nous avons expliqué le fonctionnement en détail dans un tutoriel. Dans SQL Server, il existe plusieurs méthodes pour importer un fichier texte, mais toutes ne se prêtent pas à une automatisation (la méthode qui fonctionne avec un assistant en constitue un exempe). Nous avons choisi la méthode qui passe par la création d'un "serveur lié". Il ne faut pas chercher une signification particulière à cette terminologie, et se contenter de respecter les règles d'importation et la syntaxe correspondante. Comme vous pourrez le constater dans ce qui suit, l'importation est plus compliquée à mettre en oeuvre dans SQL Server que dans Access.

Dans le cadre de l'importation, Microsoft a introduit la terminologie ISAM (Indexed Sequential Access Method). Le sigle est parfois utilisé pour désigner le type des données importées : table provenant d'un autre SGBD, feuille de données Excel, fichier texte, etc. Nous n'utiliserons pas cette terminologie dans la suite de ce document.

 

IX-2- La création du serveur lié

Nous ouvrons la console de gestion de SQL Server (Enterprise Manager), et nous développons l'explorateur de manière à faire apparaître le répertoire "Sécurité", comme le montre la figure ci-dessous. Nous effectuons un clic droit sur la rubrique "Serveurs liés" et, dans le menu contextuel, nous sélectionnons "Nouveau serveur lié...".

Une boîte de dialogue s'ouvre, comme le montre la figure ci-dessous. Dans l'onglet "Général", nous sélectionnons le bouton radio "Autre source de données" et, dans la liste déroulante correspondante, "Microsoft Jet 4.0 OLE DB Provider". Notons au passage que le "fournisseur" (traduction littérale de "provider") OLE DB est une généralisation de l'ODBC, permettant l'importation de données qui ne sont pas issues d'un SGBD.

Les autres rubriques doivent être renseignées ainsi (figure ci-dessous) :

Nous pouvons maintenant refermer la boîte de dialogue, sans nous préoccuper des deux autres onglets.

 

IX-3- La vérification

Pour vérifier le bon fonctionnement du serveur lié, nous introduisons un fichier dans le répertoire d'importation -- fichier que nous nommons "ex.txt". Nous retournons dans la console Entreprise Manager, et nous développons la rubrique "Serveurs liés". Nous sélectionnons "Tables", et nous voyons apparaître dans la partie droite de la fenêtre une table nommée "ex#txt". Cette table traduit la présence de notre fichier texte dans le répertoire d'importation (figure ci-dessous). Il s'agit en fait d'une table fictive, qui n'apparaît pas dans la liste des tables de la BDD, et que nous ne pouvons pas consulter. Mais nous invoquerons son nom dans la requête SQL d'importation.

IX-4- Le fichier schema.ini

Pour importer un fichier texte, le SGBD a besoin d'informations complémentaires :

Ces différentes informations sont rassemblées dans un fichier nommé schema.ini, que l'on doit introduire dans le répertoire d'importation. Le contenu de ce fichier est reproduit ci-dessous. Nous voyons qu'il est constitué de 22 lignes, que nous pouvons regrouper en trois parties :

[ex.txt]
ColNameHeader=False
Format=Delimited( )
MaxScanRows=0
DateTimeFormat=yyyy"-"mm"-"dd
CharacterSet=ANSI
Col1=date datetime
Col2=heure char Width 8
Col3=URL-client char Width 15
Col4=r char Width 1
Col5=methode char Width 10
Col6=requete char Width 255
Col7=r char Width 1
Col8=http-Code char Width 5
Col9=win-Code char Width 5
Col10=SC-octet char Width 10
Col11=CS-octet char Width 5
Col12=temp char Width 5
Col13=protocole char Width 10
Col14=logiciel-Client char Width 100
Col15=r char Width 1
Col16=source char Width 200

La seconde partie du fichier schema.ini est constituée ainsi :

 

IX-5- La procédure d'importation

Les trois commandes SQL utilisées pour importer le fichier journal dans une table appelée "journal_brut" sont :

DROP TABLE journal_brut
 
CREATE TABLE journal_brut (
[date] [smalldatetime] NOT NULL ,
[heure] [nchar] (10) COLLATE French_CI_AS NULL ,
[URL-client] [nvarchar] (15) COLLATE French_CI_AS NULL ,
[méthode] [nvarchar] (10) COLLATE French_CI_AS NULL ,
[requête] [nvarchar] (255) COLLATE French_CI_AS NULL ,
[HTTP-code] [nchar] (10) COLLATE French_CI_AS NULL ,
[Win-code] [nchar] (10) COLLATE French_CI_AS NULL ,
[sc-octets] [nchar] (10) COLLATE French_CI_AS NULL ,
[cs-octets] [nchar] (10) COLLATE French_CI_AS NULL ,
[temps] [nchar] (10) COLLATE French_CI_AS NULL ,
[protocole] [nvarchar] (10) COLLATE French_CI_AS NULL ,
[logiciel-client] [nvarchar] (100) COLLATE French_CI_AS NULL ,
[source] [nvarchar] (255) COLLATE French_CI_AS NULL
)ON [PRIMARY]
 
INSERT INTO journal_brut
SELECT [date] , heure , [URL-client] , methode, requete, [http-Code], [win-Code], [CS-octet], [SC-octet], [temp], protocole, [logiciel-Client], source
FROM [IMPORT-LOG]...ex#txt
WHERE [date] IS NOT NULL

Des 16 champs initiaux du fichier journal, trois ne sont pas récupérés :

Les lignes d'en-tête (lesquelles sont répétées en cas d'arrêt du serveur) ne seront pas prises en compte par le SGBD, et ce pour les raisons suivantes :

Remarque : l'expression "COLLATE French_CI_AS" qui figure pour chacun des champs de créé dans la table "journal-brut" signifie que la BDD contient des données en français, que la casse ne compte pas (CI : Case-Insensitive) et que les lettres accentuées sont prises en compte (AS : Accent-Sensitive). Ces informations ne sont pas indispensables.

 

IX-6- Le lancement de la procédure

En pratique, l'importation du fichier journal dans SQL Server s'effectue de la manière suivante :

Nous ouvrons l'Analyseur de requêtes et, si nécessaire, nous développons l'explorateur en cliquant sur l'icône . Dans la liste des procédures stockées se trouve celle que nous avons créée (dbo. importation), comme le montre la figure ci- dessous. Nous effectuons un clic droit sur son nom, et nous choisissons "Exécuter la procédure" dans le menu contextuel. Dans la boîte de dialogue qui s'ouvre alors, nous cliquons sur "Exécuter".

Nous pouvons également procéder d'une manière un peu différente. Nous utilisons de nouveau l'Analyseur de requêtes, mais sans ouvrir l'explorateur. Nous saisissons le nom de la procédure, précédé du nom de la BDD (CERIG) et du sigle DBO, comme le montre la figure ci-dessous. Nous lançons la procédure en cliquant sur la petite flèche verte . On notera que le sigle DBO signifie DataBase Owner, et qu'il désigne le compte du créateur de la base.

La méthode la plus commode consiste à créer un raccourci clavier. Nous ouvrons l'Analyseur de requêtes, et dans le menu nous choisissons "Outils", puis "Personnaliser...". La boîte de dialogue "Personnaliser" s'ouvre, l'onglet "Personnalisation" étant sélectionné. Cette boîte contient la liste des raccourcis clavier, dont trois ont déjà été mis en place par le SGBD, comme le montre la figure ci-dessous. Désormais, il nous suffira de la combinaison de touches Ctrl+F1 pour lancer l'importation.

Remarque : le détail de la procédure stockée d'importation figure en annexe.

     
Page précédente
Page précédente
Retour au sommaire
Retour au sommaire
Page suivante
Page suivante
Accueil Technique Liens Actualités Formation Emploi Forums Base  
Copyright © CERIG/EFPG 1996-2005
   
 
Mise en page : J.C. Sohm