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 en masse [2012]


Sujet :

MS SQL Server

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Juillet 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier

    Informations forums :
    Inscription : Juillet 2015
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Import en masse
    Bonjour à tous,
    J'ai une récupération de données à importer dans Une base de données SQL server 2012.
    Mes connaissances pour faire ceci se limitent à faire un insert into pour chaque ligne. J'ai 750 000 lignes à importer.
    J'ai fabriqué un fichier excel qui me permet de formater chacune de mes lignes pour être exécuté à partir de SQL Server. Cela ressemble à ceci.
    exemple de 2 lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    insert into [Sales Statistics] ([Entry No_],[Posting Date],[Type],[Document No_],[Line No_],[Document Type],[Company],[Location Code],[Responsibility Center],[Item No_],[Item Category Code],[Product Group Code], [Customer No_], [Salesperson Code]) values ('-26996','31/01/2014','2','14011840','6','0','SOCIETE','D','FRANCE','320.025A','190','020','049000','040');
    insert into [Sales Statistics] ([Entry No_],[Posting Date],[Type],[Document No_],[Line No_],[Document Type],[Company],[Location Code],[Responsibility Center],[Item No_],[Item Category Code],[Product Group Code], [Customer No_], [Salesperson Code]) values ('-26997','31/01/2014','2','14011840','7','0','SOCIETE','D','FRANCE','128.06','040','030','049000','040');
    Mes 750 000 lignes sont de ce type, mais à rallonge (2784 caractères par lignes pour 119 champs)

    La problématique est double :
    1) Je ne peux pas copier à partir de Excel et coller vers SQL plus de 10000 lignes.
    2) Je ne peux pas exécuter plus de 3000 lignes différentes, sinon SQL m'annonce qu'il a rencontré des erreurs et ne fait rien de plus.

    Le cout en temps de faire des copier/coller puis exécuter de 3000 lignes est trop important.

    Je suppose qu'il existe une (des ?) autres manières de faire des insert into dans SQL, mais ma connaissance s'arrête là.
    L'un d'entre-vous aurait-il une piste à me conseiller.

    Merci d'avance pour votre retour.

  2. #2
    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
    Si votre fichier Excel contient les valeurs à importer, vous pouvez créer un paquetage SSIS qui va le lire et charger les lignes dans la table cible.
    Sinon vous devriez pouvoir créer un fichier texte contenant tous ces ordres INSERT, changer l'extension du fichier à .sql (ce n'est pas nécessaire mais c'est plus propre), et le passer en paramètre à l'utilitaire en ligne de commande SQLCMD (paramètre -i pour qu'il prenne un fichier d'instructions en entrée).

    En ce qui concerne les erreurs, il faudrait que vous partagiez leur libellé.
    Si vous utilisez SQLCMD, vous pouvez récupérer la sortie de l'exécution des instructions dans un fichier à l'aide du paramètre -o.

    Pensez à placer un SET NOCOUNT ON en tête du fichier d'instructions INSERT : cela désactivera le retour du nombre de lignes affecté par chaque instruction INSERT, et accélèrera donc le traitement.

    @++

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Juillet 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier

    Informations forums :
    Inscription : Juillet 2015
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour elsuket,

    Merci pour cette réponse. Je vais essayer ça.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Juillet 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier

    Informations forums :
    Inscription : Juillet 2015
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Finalement je n'ai pas eu l'occasion de tester.
    Le logiciel comporte un import prévu à cet effet que je n'arrivais pas à utiliser correctement.

    Je garde tout de même vos informations qui pourraient me servir pour d'autres BDD pour lesquelles je n'ai pas d'outils d'import.
    En tout cas, merci pour votre temps.

    Zag.

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

Discussions similaires

  1. [AC-2010] Importer en masses un lot variable de fichiers texte à la demande
    Par Nikimizi dans le forum VBA Access
    Réponses: 7
    Dernier message: 16/01/2015, 12h40
  2. [PHP 5.3] Import de masse en plusieurs étapes
    Par fanfouer dans le forum Langage
    Réponses: 5
    Dernier message: 21/09/2011, 17h45
  3. Réponses: 39
    Dernier message: 30/06/2011, 09h07
  4. Importation de masse sur mysql
    Par phoenix345 dans le forum MySQL
    Réponses: 11
    Dernier message: 14/04/2010, 15h37
  5. Réponses: 12
    Dernier message: 25/04/2008, 14h38

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