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

Administration SQL Server Discussion :

Importation automatique de fichier SQL [2005]


Sujet :

Administration SQL Server

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2015
    Messages : 14
    Points : 17
    Points
    17
    Par défaut Importation automatique de fichier SQL
    Bonjour,

    je suis actuellement sur un serveur "Windows server 2003", j'utilise "Sql server 2005" avec l'outil "sql server management studio express". Mon objectif est de transférer les données d'une base Firebird vers sql server, je suis parvenu à extraire les données de la base Firebird en format .sql et .csv, mais je cherche un moyen pour importer automatiquement les données des fichiers (sql ou csv) vers sql server.
    Utilisant la version "Express" de "sql server management studio" je ne possède pas l'outil 'sql agent' permettant d'effectuer des taches automatiques.

    J’espère que vous pourrez me renseigner sur cette importation automatique.

    Merci d'avance.

  2. #2
    Membre confirmé Avatar de Diablo_22
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2005
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2005
    Messages : 498
    Points : 490
    Points
    490
    Par défaut
    Bonjour,

    tu peux passer par un fichier batch script qui va importer tout tes fichiers présent dans un dossier donné.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     --Insertion en bloc de plusieurs fichiers à partir d'un dossier 
     
        CREATE TABLE ALLFILENAMES(WHICHPATH VARCHAR(255),WHICHFILE varchar(255))
     
        --variables
        declare @filename varchar(255),
                @path     varchar(255),
                @sql      varchar(8000),
                @cmd      varchar(1000)
     
     
        --obtenir la liste des fichiers à traiter :
        SET @path = 'C:\Dump\'
        SET @cmd = 'dir ' + @path + '*.csv /b'
        INSERT INTO  ALLFILENAMES(WHICHFILE)
        EXEC Master..xp_cmdShell @cmd
        UPDATE ALLFILENAMES SET WHICHPATH = @path where WHICHPATH is null
     
     
        --boucle de curseur
        declare c1 cursor for SELECT WHICHPATH,WHICHFILE FROM ALLFILENAMES where WHICHFILE like '%.csv%'
        open c1
        fetch next from c1 into @path,@filename
        While @@fetch_status <> -1
          begin
          --bulk insert won't take a variable name, so make a sql and execute it instead:
           set @sql = 'BULK INSERT Temp FROM ''' + @path + @filename + ''' '
               + '     WITH ( 
                       FIELDTERMINATOR = '','', 
                       ROWTERMINATOR = ''\n'', 
                       FIRSTROW = 2 
                    ) '
        print @sql
        exec (@sql)
     
          fetch next from c1 into @path,@filename
          end
        close c1
        deallocate c1
    N'oubliez pas la balise

    est ton ami mais quand Google ne trouve pas quelque choses, il demande à Chuck Norris.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2015
    Messages : 14
    Points : 17
    Points
    17
    Par défaut
    Tout d'abord je te remercie de prendre le temps de m'aider.

    Je suis pas tout a fait habitué avec ce genre de fichier mais je comprends le code de celui-ci, mais il me semble qu'il manque certaines informations comme le nom du serveur ainsi que celui de la base de données non ?
    J'ai placé le fichier dans le même dossier que mes fichiers csv.

    Dans mon dossier je possède plusieurs fichier csv, ceux-ci correspondent à des tables présentes dans ma BDD (ex: machines.csv à importer dans ma table 'machines'), puis-je créer un fichier .bat pour insérer tous les fichiers dans les bonnes tables ou créer un fichier pour chaque csv/table (ex: machines.bat pour importer les données de machines.csv dans la table machines) ?

    (En espérant d'avoir été le plus clair possible).

  4. #4
    Membre confirmé Avatar de Diablo_22
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2005
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2005
    Messages : 498
    Points : 490
    Points
    490
    Par défaut
    Je me suis trompé je voulais dire un fichier script au lieu de fichier batch.

    tu lance la commande suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqlcmd -S .\SQLExpress -i SqlScript.sql
    sqlcmd Doc
    N'oubliez pas la balise

    est ton ami mais quand Google ne trouve pas quelque choses, il demande à Chuck Norris.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2015
    Messages : 14
    Points : 17
    Points
    17
    Par défaut
    Merci j'essayerai cela dès que possible.

    Serait-il possible importer un fichier "machines.csv" dans une base particuliere (ex: choco) et que les données y soient insérer car à première vue, cela crée une table dans une base "master" or je voudrai que cela soit dans une base "choco".

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Vrognak Voir le message
    Merci j'essayerai cela dès que possible.

    Serait-il possible importer un fichier "machines.csv" dans une base particuliere (ex: choco) et que les données y soient insérer car à première vue, cela crée une table dans une base "master" or je voudrai que cela soit dans une base "choco".
    C'est dans les option de sqlcmd : https://msdn.microsoft.com/en-us/lib...sql.90%29.aspx

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2015
    Messages : 14
    Points : 17
    Points
    17
    Par défaut
    Bonjour,

    Je tiens à vous remercier pour vos réponses car cela m'a pas mal avancé, j'arrive à me connecter à la base de données et à importer un fichier SQL à l'aide de la commande suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqlcmd -U utilisateur - P password -S nomDuServeur -d nomBDD -i import.sql
    Le contenu du fichier "import.sql" est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    BULK INSERT dbo.MACHINES
    FROM 'c:\MACHINES.csv'
    WITH (
    FIELDTERMINATOR = ';',
    ROWTERMINATOR = '\n',
    FIRSTROW=2
    );
    La requête s'effectue correctement pour l'insertion de données mais le problème est lors de la visualisation des données j'obtiens les données avec les guillements :
    CODE_MACH LIB_MACH PAS_MACH
    "1" "MACHINE 1" NULL
    Voici le contenu du fichier CSV :

    Un autre problème s'offre à moi, les fichiers CSV vont être actualisés souvent (ex: toutes les cinq minutes), le problème est qu'il y aura plusieurs fois la même machine et donc un problème de doublon pour la clé primaire, ce qui empêche l'importation. Est-il possible d'ajouter une ligne pour éviter les doublons ?

  8. #8
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Vous avez deux options :

    - Vous restez en T-SQL, et vous créez donc une table dédiée à l'import, qui n'aura pour seul but que de recevoir le contenu brut du fichier; vous ajoutez ensuite une requête à votre fichier de script pour éliminer les guillemets (REPLACE(maColonne, '"', '')) et obtenir des noms de machine uniques.

    - Vous créez un paquetage SQL Server Integration Services qui sont conçus pour supporter votre besoin et ses particularités.

    Au passage, le support par Microsoft de SQL Server 2005 se termine le 12 Avril 2016. Prévoyez donc de faire la mise à jour vers SQL Server 2008 ou suivant.

    @++

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

Discussions similaires

  1. Importer un gros fichier SQL sous windows
    Par bigsister dans le forum Outils
    Réponses: 2
    Dernier message: 24/08/2007, 16h17
  2. Importation d'un fichier .sql en commande sql
    Par mysterywhiteboy59 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 31/07/2006, 22h08
  3. importer automatiquement un fichier excel
    Par polianita dans le forum Access
    Réponses: 2
    Dernier message: 11/07/2006, 18h20
  4. [phpMyAdmin] importation d'un fichier .sql volumineux dans phpMyAdmin problématique
    Par allowen dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 23/06/2006, 10h52
  5. Importation automatique de fichier .dbf
    Par hysteresis dans le forum Access
    Réponses: 6
    Dernier message: 28/10/2005, 08h16

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