web-dev-qa-db-fra.com

Virgules dans les données CSV

J'ai un fichier CSV que j'importe directement à une table de serveur SQL. Dans le fichier CSV, chaque colonne est séparée par une virgule. Mais mon problème est que j'ai une colonne "adresse", et les données dans cette colonne contiennent des virgules. Donc ce qui se passe, c’est que certaines des données de la colonne d’adresse vont aux autres colonnes qui seront importées sur le serveur SQL.

Que devrais-je faire?

15
Sidharth

S'il y a une virgule dans une colonne, cette colonne doit être entourée d'un guillemet simple ou d'un guillemet double. Ensuite, si à l'intérieur de cette colonne se trouve une citation simple ou double, elle devrait être précédée d'une charte d'évasion, généralement un \

Exemple de format de CSV

 ID - adresse - nom 
 1, "Une adresse, une rue, 10452", 'David O \' Brian '
17
Brady

pour ce problème, la solution est très simple. sélectionnez d’abord>> fichier source simple => parcourez votre fichier => que de sélectionner le "qualificateur de texte" par défaut. (") et suivez les instructions du magicien.

les étapes sont - d’abord, sélectionnez => fichier source simple => parcourez votre fichier => qualificateur de texte (écriture uniquement ") et suivez les instructions de l’assistant.

bonne chance

35
Ajeet Malviya

Je suggérerais soit d'utiliser un autre format que CSV, soit d'utiliser d'autres caractères comme séparateur de champ et/ou délimiteur de texte. Essayez de rechercher un caractère qui n'est pas utilisé dans vos données, par exemple. |, #, ^ ou @. Le format d’une seule ligne deviendrait

|foo|,|bar|,|baz, qux|

Un analyseur bien se comporter ne doit pas interpréter "baz" et "qux" comme deux colonnes.

Alternativement, vous pouvez écrire votre propre import vaudou qui résout tous les problèmes. Pour les plus récents, vous trouverez peut-être ceci Groovy squelon utile (vous ne savez pas dans quelles langues vous parlez couramment)

1
sfussenegger

La plupart des systèmes, y compris Excel, permettent aux données de colonne d'être placées entre guillemets simples ...

col1, col2, col3 'test1', 'mon test2, avec virgule', test3

Une autre alternative consiste à utiliser la version Macintosh de CSV, qui utilise les séparateurs de la tabulation.

1
RichO

Le meilleur moyen, le plus rapide et le plus simple pour résoudre le problème de virgule dans les données est d’utiliser Excel pour enregistrer un fichier séparé par des virgules après avoir défini le paramètre de séparateur de liste de Windows sur autre chose qu’une virgule (telle qu’un tube). Cela générera alors un fichier séparé par pipe (ou autre) que vous pourrez ensuite importer. Ceci est décrit ici .

1
Sachin Kainth

Je ne pense pas qu’ajouter des guillemets pourrait aider. La meilleure façon de procéder est de remplacer la virgule dans le contenu par d’autres marques, telles que l’espace ou autre chose.

replace(COLUMN,',',' ') as COLUMN
0
hajimuz

Ajouter une marque de parole dans la colonne de sélection des deux côtés fonctionne. Vous devez également convertir la colonne en NVARCVHAR (MAX) pour la transformer en chaîne si la colonne est TEXT.

SQLCMD -S DB-SERVER -E -Q "set nocount on; set ansi_warnings off; SELECT '""' + cast ([Column1] as nvarchar(max)) + '""' As TextHere, [Column2] As NormalColumn FROM [Database].[dbo].[Table]" /o output.tmp /s "," -W
0
mashtheweb