Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
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 20/12/2011, 10h10   #1
Invité de passage
 
Homme
Développeur .NET
Inscription : décembre 2011
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur .NET

Informations forums :
Inscription : décembre 2011
Messages : 5
Points : 0
Points : 0
Par défaut Import data UTF-8 vers SQL-Server 2005

Bonjour,

Après plusieurs jours de recherche, je me résigne à venir poster mon problème :

J'ai un soucis lors de l'import d'un fichier csv encodé en UTF-8, je dois l'importer dans ma base SQL Server qui elle est sous le format suivant : "FRENCH_CI_AS" (sauf erreur de ma part)

j'ai un problème avec les caractères accentués qui sont converties.

Comment faire pour le résoudre ?

ASP.NET / VB.NET
Merci
Salvat13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 11h20   #2
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 470
Points : 2 470
Envoyer un message via Yahoo à zinzineti
as-tu essayé avec la clause COLLATE côté SQL ?

Peux-tu montrer un exemple de caractère accentué mal converti ?
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 12h02   #3
Invité de passage
 
Homme
Développeur .NET
Inscription : décembre 2011
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur .NET

Informations forums :
Inscription : décembre 2011
Messages : 5
Points : 0
Points : 0
"propriétaire âge" ou encore "proposition jugée trop faible. attends 3000 € de"

En fait je passe par une fonction qui effectue un

"SELECT * FROM " &monfichier.csv et retourne le tout dans un datatable.

Je ne connais la clause COLLATE, existe t-il une source qui explique cette clause ?

Merci
Salvat13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 12h19   #4
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
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 959
Points : 17 791
Points : 17 791
Comment faites vous l'import ?
Avec BULK INSERT ? Avec bcp.exe ??
Montrez le code...

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 00
Vieux 20/12/2011, 12h32   #5
Invité de passage
 
Homme
Développeur .NET
Inscription : décembre 2011
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur .NET

Informations forums :
Inscription : décembre 2011
Messages : 5
Points : 0
Points : 0
Comme ceci :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Dim Req AS String = "SELECT * FROM " & monfichier.csv
Dim dtable AS New DataTable(dtName)
 
Dim MaBase AS String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='source';Extended Properties='text;HDR="withEntete";FMT=Delimited'"
 
USING cmd AS New OleDb.OleDbCommand(Req, New OleDb.OleDbConnection(MaBase))
    cmd.Connection.Open()
    cmd.Transaction = cmd.Connection.BeginTransaction
            USING dr AS OleDb.OleDbDataReader = cmd.ExecuteReader()
                dtable.LOAD(dr)
            End USING
    cmd.Transaction.Commit()
End USING
 
RETURN dtable
Salvat13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 14h59   #6
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 470
Points : 2 470
Envoyer un message via Yahoo à zinzineti
avec cette méthode il faut créer un fichier de format schema.ini afin d'appliquer le bon encodage. ce fichier doit être dans le même répertoire que ton fichier .CSV

Exemple de fichier schema.ini

Code :
1
2
3
4
5
6
7
8
[Nomfichier.csv]                    
Format = CSVDelimited       
CharacterSet=UTF-8
ColNameHeader=True         
Col1=ID Integer Width 4
Col2=NOM Char Width 20
Col3=PRENOM Char Width 20
Col4=Date_NAISSANCE Date
Un lien pour t'aider :
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 15h38   #7
Invité de passage
 
Homme
Développeur .NET
Inscription : décembre 2011
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur .NET

Informations forums :
Inscription : décembre 2011
Messages : 5
Points : 0
Points : 0
Ok merci pour les informations, je vais regarder tout cela
Salvat13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 17h42   #8
Invité de passage
 
Homme
Développeur .NET
Inscription : décembre 2011
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur .NET

Informations forums :
Inscription : décembre 2011
Messages : 5
Points : 0
Points : 0
Merci à toi Etienne ZINZINDOHOUE
J'ai réussi en passant effectivement par un fichier .ini

mais attention lors de la création du fichier, pour la propriété CharacterSet (Ci-dessous)

Code :
1
2
3
4
5
6
[MonFichier.csv]
ColNameHeader=True
CharacterSet=65001 (Format UTF-8)
Format=Delimited(;) 
DateTimeFormat=dd-MMM-yyyy
Source : http://social.msdn.microsoft.com/For...4-107c3c39a302
Salvat13 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 20h27.


 
 
 
 
Partenaires

Hébergement Web