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 03/11/2011, 17h10   #1
Candidat au titre de Membre du Club
 
Homme
Consultant en Business Intelligence
Inscription : mars 2011
Messages : 26
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : mars 2011
Messages : 26
Points : 11
Points : 11
Par défaut BULK INSERT - la première ligne ne s'insère pas

Bonjour à tous et merci d'avancement pour le temps que vous accordez à mon problème,

(je précise avant tout que le problème est simplifié)

J'ai un fichier texte.CSV qui contient des lignes comme celle ci ->

1;BLABLA
2;TRUC
3;CHOSE

Je souhaite insérer ces lignes dans une table à deux champs :

l'un numérique l'autre alfa.

Code :
1
2
3
4
5
6
7
8
9
SET QUOTED_IDENTIFIER ON
GO
 
CREATE TABLE matable
(
	[id] [int] NOT NULL,
	[texte] [nvarchar](10) NULL,
	CONSTRAINT [PK] PRIMARY KEY CLUSTERED ([id] ASC)
) ON [PRIMARY]

Pour cela j'utilise BULK INSERT :

Code :
1
2
3
4
5
6
7
8
9
BULK INSERT matable
FROM 'c:\texte.csv'
WITH
(
FIELDTERMINATOR = ';',
ROWTERMINATOR = '\n',
FIRSTROW = 1
)
GO
Avec l'option FIRSTROW = 2 la première ligne ne s'insère pas (normal) et je n'ai pas d'erreur.

Avec FIRSTROW = 1 la première ligne ne s'insère pas et j'obtiens l'erreur suivante :

Citation:
Msg 4864, Level 16, State 1, Line 2
Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 1, column 1 (id).
Ma question : comment j'insère la première ligne ?

Pouvez vous m'aider ?
Amarox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2011, 17h32   #2
Candidat au titre de Membre du Club
 
Homme
Consultant en Business Intelligence
Inscription : mars 2011
Messages : 26
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : mars 2011
Messages : 26
Points : 11
Points : 11
Mon problème venait de l'encodage des caractère du fichier.

En UTF8, ça marche pas !

Je laisse le post, si ça peut aider un jour.
Amarox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/11/2011, 02h59   #3
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 670
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

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

Informations forums :
Inscription : janvier 2005
Messages : 4 670
Points : 8 732
Points : 8 732
Bonjour,

Avez vous essayé avec l'option CODEPAGE = 65001 ?

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2011, 11h25   #4
Candidat au titre de Membre du Club
 
Homme
Consultant en Business Intelligence
Inscription : mars 2011
Messages : 26
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : mars 2011
Messages : 26
Points : 11
Points : 11
J'ai remis en UTF8 pour tester :

Code :
1
2
Msg 2775, Level 16, State 13, Line 2
The code page 65001 IS NOT supported BY the server.
Amarox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2011, 11h34   #5
Membre Expert
 
Homme Sylvain Devidal
Chef de projets Générix
Inscription : février 2010
Messages : 1 062
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Devidal
Âge : 33
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Chef de projets Générix
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2010
Messages : 1 062
Points : 1 515
Points : 1 515
Problème classique avec l'encodage UTF-8 (on a le même avec le parsing XML) : UTF-8 rajoute une signature de 2 octets en début de fichier, et quand on a une incohérence entre l'encodage du fichier et l'encodage attendu, ça plante tout
StringBuilder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2011, 13h41   #6
Candidat au titre de Membre du Club
 
Homme
Consultant en Business Intelligence
Inscription : mars 2011
Messages : 26
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : mars 2011
Messages : 26
Points : 11
Points : 11
OK,

Merci pour cette précision.

J'ai eu quelques précisions sur mon fichier d'entré (il est fourni par mon client arff). Celui-ci est maintenant en ANSI (cool) et se compose de la manière suivante (moins cool) :

"BLABLA";"UNO"
"TRUC";"DOS"
"CHOSE";TRES"

Vous pouvez remarqué que l'identifiant a disparue et que j'ai maintenant des guillemets entre les caractères.

J'ai donc appliqué le changement suivant sur ma table :

Code :
1
2
3
4
5
6
7
8
 
CREATE TABLE matable
(
	[id] [int] NOT NULL,
	[texte1] [nvarchar](10) NULL,
	[texte2] [nvarchar](10) NULL,
	CONSTRAINT [PK] PRIMARY KEY CLUSTERED ([id] ASC)
) ON [PRIMARY]
Avec la même commande ça ne passe pas :

Code :
1
2
3
 
Msg 4864, Level 16, State 1, Line 2
Bulk LOAD DATA conversion error (type mismatch OR invalid character FOR the specified codepage) FOR row 1, COLUMN 1 (id).
x10 l'erreur pour chaque ligne du fichier

Je recherche actuellement le moyen de faire comprendre a ma commande BULK le nouveau fichier.
Amarox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2011, 17h04   #7
Candidat au titre de Membre du Club
 
Homme
Consultant en Business Intelligence
Inscription : mars 2011
Messages : 26
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : mars 2011
Messages : 26
Points : 11
Points : 11
La réponse était de créer une vue :

Plus d'info :

http://beyondrelational.com/blogs/ma...c-columns.aspx

Merci à tous en tout cas, see you soon
Amarox 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 13h14.


 
 
 
 
Partenaires

Hébergement Web