Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/07/2011, 14h32   #1
Membre expérimenté
 
Avatar de tumoo
 
Homme
Développeur informatique
Inscription : janvier 2011
Messages : 309
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 22
Localisation : France, Charente Maritime (Poitou Charente)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2011
Messages : 309
Points : 550
Points : 550
Par défaut Importer données depuis Excel

Bonjour à tous,

J'ai vu pas mal de sujet à propos de mon problème, mais ça ne m'a pas trop aider. Je demande donc votre attention.

J’ai un fichier Excel de plus de 2000 lignes à insérer dans une base de données SQL Server. En gros, ces lignes vont être insérées dans 2 tables, une table société et une table contact.
Le format du fichier Excel n'est pas encore définitif (je peux modifier sa structure avant de l'exploiter).
La première ligne du fichier correspond aux nom des colonnes.
Il peut y avoir plusieurs contacts par société, je vous montre un exemple pour que ça soit plus simple

Citation:
nomSociete numTelephone nomContact prenomContact email
----------------------------------------------------------------
Societe1 0000000000 Nom1 Prenom1 email1
Societe1 0000000000 Nom2 Prenom2 email2
Societe2 0000000001 Nom3 Prenom3 email3
voilà en gros la forme qu'il a
et dans ma base de données, mes 2 tables seront :
Societe(id, nomSociete, numTelephone)
Contact(id, nomContact, prenomContact, email, idSociete)

Je ne vois pas comment traiter ça.
Je suis sous SQL Server 2005.

J'ai eu quelques indications sur le chat, on m'a parlé de Bulk Insert avec des curseurs mais je ne vois pas comment faire.

Si quelqu'un aurait une piste pour moi
Merci
tumoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2011, 14h52   #2
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 954
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 954
Points : 17 774
Points : 17 774
Transformez votre feuille Excel en CSV.
Utilisez BCP.exe ou BULK INSERT.
Définissez les délimiteur ( et fin de ligne (\n)
Ne prenez pas la première ligne.

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 07/07/2011, 15h47   #3
Membre expérimenté
 
Avatar de tumoo
 
Homme
Développeur informatique
Inscription : janvier 2011
Messages : 309
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 22
Localisation : France, Charente Maritime (Poitou Charente)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2011
Messages : 309
Points : 550
Points : 550
Merci pour ta réponse rapide

J'ai bien vu cette manière de faire, mais je ne vois pas comment gérer ma clé étrangère idSociete

J'ai essayé quelque chose comme ça, j'ai compris comment fonctionne le Bulk insert

Code SQL :
1
2
3
4
5
6
7
8
9
10
 
BULK INSERT maTable
FROM 'monfichier.csv'
WITH 
( 
FIRSTROW = 2, -- La première est le nom des colonnes dans excel
FIELDTERMINATOR = ';', -- Le séparateur est le ;
ROWTERMINATOR = '\n', -- Séparateur des lignes
MAXERRORS = 0
)

Mais c'est pour après, car une ligne de mon fichier Excel contient des données qui sont destinées à 2 tables différentes
tumoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2011, 23h01   #4
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 139
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 139
Points : 2 467
Points : 2 467
Envoyer un message via Yahoo à zinzineti
Vous pouvez vous inspirez de cette procédure stockée

A+
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/07/2011, 09h34   #5
Membre expérimenté
 
Avatar de tumoo
 
Homme
Développeur informatique
Inscription : janvier 2011
Messages : 309
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 22
Localisation : France, Charente Maritime (Poitou Charente)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2011
Messages : 309
Points : 550
Points : 550
Merci pour ce lien

Je suis finalement parti vers une méthode moins "orthodoxe" mais je ne voyais pas comment faire autrement.
J'ajouterai les clés manuellement dans mon fichier excel. J'ai tester, ça fonctionne correctement.

merci à vous
tumoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h51.


 
 
 
 
Partenaires

Hébergement Web