IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Import de données provenant d'un fichier texte


Sujet :

MS SQL Server

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 181
    Points : 69
    Points
    69
    Par défaut Import de données provenant d'un fichier texte
    Bonjour,
    Tout d'abord je tiens à signaler que ma connaissance des lots DTS n'est qu'approximative, cependant je souhaite m'y mettre

    Donc, je vous explique mon problème

    Je souhaite réaliser la remonter d'informations provenant d'un fichier texte dont le format est particulier.
    En effet, celui-ci contient l'ensemble des données d'une base, je ne peux donc réaliser (enfin je pense) un mappage classique. Néanmoins, nous avons codé à une époque pas si lointaine, une fonction d'import de ce fichier sous ACCESS (Qui marche très bien).

    Ma question est donc la suivante:

    Est t'il possible de réutiliser du code VBA pour réaliser ma fonction d'import?
    Suis-je sur la mauvaise piste??? SI c'est le cas ou non, une aide serait la bienvenue

    Merci par avance pour votre aide
    Cordialement,
    Daniel

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    381
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 381
    Points : 231
    Points
    231
    Par défaut
    Bonjour,

    je ne sais pas si je comprends bien le probleme.
    Pourquoi ne pas réaliser de mappage classique ?
    C'est comme ca que je fonctionnerais pour ma part.
    Import dans tables temporaires puis copie par procédures stockées.

    Sinon, il y a des blocs DTS qui permettent d'executer du VBA.

    PS : pourquoi avoir toutes les données dans le meme txt ?
    J'espere que le schéma n'est pas trop complexe, sinon ca va etre rock'n roll à mapper.

    PPS : on parle bien de DTS, et pas de SSIS ? SQL Server 2000 ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 181
    Points : 69
    Points
    69
    Par défaut
    Salut,
    Alors tout d'abord je me suis trompé je parle bien de ssis et non de DTS (SQL server 2005).
    Sinon concernant le fichier je n'ai malheureusement pas le choix: Il contient l'ensemble des données toutes tables confondues :/
    De plus les caractères de séparation sont particulier puisqu'ils dépendent de la taille des champs de leur table respective :/

    Par contre peux-tu me préciser un peu plus concernant l'utilisation via procédure stockée: Peux-t'on manipuler des fichiers txt????

  4. #4
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 792
    Points : 3 061
    Points
    3 061
    Par défaut
    Comment différencies-tu les enregistrements dans ton fichier texte ? Je présume que tu as un code qui te permet de savoir dans quelle table la ligne doit aboutir.

    J'ai dû faire un truc du genre : je reçois chaque jour un fichier TXT provenant d'un IBM mainframe. Ce mainframe tourne toujours depuis ... 40 ans ! Le fichier reprend un code en deux positions pour me dire quel est le type d'enregistrement puis à partir de la position trois, j'ai l'info proprement dite.

    Ma solution a été d'importer le fichier tel quel dans une table de ma DB. Cette table reprend deux colonnes, le code dont j'ai parlé (char(2)) et l'info dans une seconde colonne.

    Une fois le fichier importé dans ma table, je lance plusieurs views qui sont programmé avec des SUBSTR et un WHERE clause. Le WHERE me permet de n'avoir que les records ayant comme code XX et les SUBSTR de récupérer les infos "par bloc" depuis la colonne avec le contenu. C'est môche car il faut compter la position des caractères et c'est pas folichon mais comme nul doute que la structure du fichier TXT ne sera plus jamais changée.

    Ma solution fonctionne depuis pas mal de temps déjà et donne entière satisfaction.

    Bonne programmation.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    381
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 381
    Points : 231
    Points
    231
    Par défaut
    Citation Envoyé par DanaX Voir le message
    Salut,
    Alors tout d'abord je me suis trompé je parle bien de ssis et non de DTS (SQL server 2005).
    Sinon concernant le fichier je n'ai malheureusement pas le choix: Il contient l'ensemble des données toutes tables confondues :/
    De plus les caractères de séparation sont particulier puisqu'ils dépendent de la taille des champs de leur table respective :/

    Par contre peux-tu me préciser un peu plus concernant l'utilisation via procédure stockée: Peux-t'on manipuler des fichiers txt????
    Non, ca n'est pas ce que je voulais dire.

    En général, voila comment je procède :
    J'ai à importer les données pour la table TblData à partir d'un Txt.
    Je crée une table TblData_Temp, puis j'importe à l'aide de SSIS dans cette table.
    Ensuite, je crée une procédure stockée pour copier les données de TblData_Temp vers TblData, en ajoutant les traitements nécessaires (il y en a souvent).

    Ici, tu importes les données de toute la base de cette manière, mais je pense que c'est faisable exactement de la meme maniere.
    Tu peux tout à fait mapper ton fichier texte vers plusieurs tables.

    Si tu n'as aucun traitement et que tu es sûr de pouvoir importer les données brutes (on peut aussi faire quelques traitements lors de l'import dans SSIS), tu peux zapper l'étape de la table temporaire.

    Pour ce qui est de la "différenciation" des colonnes dans le fichier texte, je n'aime pas utiliser les séparateurs. Mais il est possible de préciser dans SSIS la taille de chaque colonne (en nombre de caracteres). C'est plus simple je trouve.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 19/01/2006, 18h16
  2. Transposer des données sql dans un fichier texte
    Par Anakior dans le forum Outils
    Réponses: 3
    Dernier message: 11/12/2005, 10h01
  3. [vb.net]recupération de donnée provenant d'un fichier xml
    Par moust dans le forum Windows Forms
    Réponses: 24
    Dernier message: 04/07/2005, 09h55
  4. Réponses: 6
    Dernier message: 02/06/2005, 12h44
  5. Stockage de données & lecture d'un fichier texte
    Par petitours dans le forum C++Builder
    Réponses: 6
    Dernier message: 13/03/2004, 14h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo