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

Développement SQL Server Discussion :

Import Excel INSERT


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 56
    Par défaut Import Excel INSERT
    Bonjour,

    J'utilise SQL Server 2000, et je souhaiterais importer des données Excel.
    Jusque là, rien de méchant, mais il se trouve que je souhaite non pas créer de nouvelles tables, mais remplir des tables avec les données à importer. Ainsi, il devient impossible d'utiliser l'interface graphique de DTS (le logiciel qui permet de faire un export/import simplement...).

    Donc, je dois procéder par INSERT INTO pour remplir ma table.
    Ma première question est donc : comment faire référence aux cellules Excel avec la requête INSERT INTO ?

    Là où ça se corse un peu, c'est que j'ai la structure suivante :

    Catégorie |Utilisateur |N° de fiche

    Catégorie A | Utilisateur a | 1
    Catégorie A | Utilisateur b | 2
    Catégorie B | Utilisateur c | 1

    A noter que si la requête se fait en même temps que l'import, ce numéro de fiche ne doit pas être importé d'Excel (sinon, je pense qu'il m'aurait fallu traiter ça en VBA), mais renseigné par la requête INSERT INTO (ou toute autre requête, c'est juste que je ne connais pas les autres).
    En gros, il faut que le numéro de fiche d'un utilisateur soit le dernier numéro de fiche de la catégorie de l'utilisateur +1.

    Si quelqu'un sait comment en faire une requête, je suis preneur.

    Je vous remercie d'avance de votre aide.

    Cordialement,
    LupusCramus

  2. #2
    Membre Expert

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Par défaut
    En quoi le fait de devoir charger des tables existantes vous empeche d'utiliser DTS pour ce faire ? Ce n'est aucunement une limitation...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 56
    Par défaut
    Ce n'est pas que je ne peux pas utiliser DTS, en fait.
    C'est juste que je ne peux plus utiliser la méthode "simple", tout à la souris, sans SQL, juste en sélectionnant les tables que je veux implémenter.
    En revanche, je dois utiliser les requêtes SQL.
    Donc si je peux toujours sélectionner le fichier Excel dont je veux extraire les données, je ne sais pas du tout comment y faire référence pour y extraire les données.

  4. #4
    Membre Expert

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Par défaut
    Je vous comprend pas completement...

    Voici tout de meme ceci, vous permettant de creer un linked server vers votre fichier excel, ajustez les parametres en fonction de votre environnement:

    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
    DECLARE @RC int
    DECLARE @server nvarchar(128)
    DECLARE @srvproduct nvarchar(128)
    DECLARE @provider nvarchar(128)
    DECLARE @datasrc nvarchar(4000)
    DECLARE @location nvarchar(4000)
    DECLARE @provstr nvarchar(4000)
    DECLARE @catalog nvarchar(128)
    -- Set parameter values
    SET @server = 'XLTEST_SP'
    SET @srvproduct = 'Excel'
    SET @provider = 'Microsoft.Jet.OLEDB.4.0'
    SET @datasrc = 'c:\book1.xls'
    SET @provstr = 'Excel 8.0'
    EXEC @RC = [master].[dbo].[sp_addlinkedserver] @server, @srvproduct, @provider, 
    @datasrc, @location, @provstr, @catalog
    Et sur base de ce linked server, comment acceder a vos donnees:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM XLTEST_SP...Sheet1$

    Pour plus d'information, voyez cet article:
    http://support.microsoft.com/kb/306397

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 56
    Par défaut
    Hum...
    Je me suis mal expliqué. J'aurais du dire qu'il est impossible d'utiliser la première option dans DTS (copier une ou plusieurs tables à partir de la base de données source), car cela créé un nouvelle table, et ne permet pas de remplir des tables pré-existantes.
    On est dont obligés d'utiliser la deuxième option (Utiliser une requête pour spécifier les données à transférer), qui nous amène dans une fenêtre avec un bloc blanc ayant pour titre "Instruction de requête :"
    Ainsi, il faut que je remplisse ce bloc avec des requêtes, mais je ne vois pas comment faire référence au classeur Excel, préalablement sélectionné pour l'import de données.

    Je préférerais -si c'est possible- ne pas passer par les serveurs liés.
    Entre autres parce que je n'en vois pas l'utilité, étant donné qu'il n'y a pas de bureau distant.

    Merci pour vos réponses.

    Cordialement

  6. #6
    Membre Expert

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Par défaut
    Citation Envoyé par LupusCramus Voir le message
    Hum...
    Je me suis mal expliqué. J'aurais du dire qu'il est impossible d'utiliser la première option dans DTS (copier une ou plusieurs tables à partir de la base de données source), car cela créé un nouvelle table, et ne permet pas de remplir des tables pré-existantes.
    Je n'ai pas de serveur pour tester sous la main, mais j'ai de gros doutes sur ce que vous avancez.
    Il me semble plus que logique que l'on puisse importer des donnees dans des tables existantes sans devoir en creer de nouvelles.
    Creez une connection excel, une connection SQL serveur.
    Utilisez un data transfer task entre les 2.
    Selectionnez la table destination deja existante sur votre serveur et faite le mapping entre vos colonnes excel et vos colonnes de la table destination.

    Est ce ainsi que vous aviez deja essayer de proceder ?

Discussions similaires

  1. [import] Excel et ligne de noms des champs
    Par babar01 dans le forum Access
    Réponses: 2
    Dernier message: 05/10/2005, 15h46
  2. [win32] delphi importation excel
    Par pier dans le forum Bases de données
    Réponses: 2
    Dernier message: 09/09/2005, 15h27
  3. Erreur d'import Excel -> Delphi
    Par Homer dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 05/07/2004, 10h07
  4. Import Excel / CSV
    Par aston_max dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 04/07/2004, 23h31
  5. import Excel --> Stringgrid de Delphi
    Par Homer dans le forum Langage
    Réponses: 2
    Dernier message: 16/06/2004, 12h53

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