Virgules dans datatables CSV

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

Que devrais-je faire?

S'il y a une virgule dans une colonne, cette colonne doit être entourée d'un guillemet simple ou double. Alors si à l'intérieur de cette colonne il y a une citation simple ou double, il devrait y avoir une charte d'échappement avant, généralement un \

Exemple de format de CSV

 ID - adresse - nom
 1, "Some Address, Some Street, 10452", "David O '' Brian '

pour ce problème, la solution est très simple. first select => file plat source => parcourir votre file => que d'aller au "qualificatif de text" par défaut son aucun écrire ici double quote comme (") et suivez les instructions de l'assistant.

les étapes sont – premier choix => file plat source => parcourir votre file => qualificateur de text (écrire seulement ") et suivez les instructions de l'assistant.

bonne chance

Je suggère soit d'utiliser un autre format que CSV ou essayez d'utiliser d'autres caractères comme séparateur de champs et / ou délimiteur de text. Essayez de searchr 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 parsingur qui se comporte bien ne doit pas interpréter 'baz' et 'qux' comme deux colonnes.

Alternativement, vous pouvez écrire votre propre voodoo d'import qui résout tous les problèmes. Pour le plus tard, vous pourriez find ce squelette Groovy utile (pas sûr de ce que vous parlez couramment)

La plupart des systèmes, y compris Excel, permettront de placer datatables de la colonne 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 TAB comme délimiteurs.

Le meilleur, le plus rapide et le plus simple pour résoudre la virgule dans datatables est d'utiliser Excel pour save un file séparé par des virgules après avoir défini le paramètre séparateur de list de Windows sur autre chose qu'une virgule (comme un tuyau). Cela générera alors pour vous un file séparé de pipe (ou n'importe quel autre) que vous pourrez ensuite importer. Ceci est décrit ici .

Je ne pense pas que l'ajout de citation pourrait aider. La meilleure façon que je suggère est de replace la virgule dans le contenu avec d'autres marques comme l'espace ou quelque chose.

 replace(COLUMN,',',' ') as COLUMN 

L'ajout d'une marque de discours dans la colonne de sélection sur les deux œuvres de côté. Vous devez également convertir la colonne en NVARCVHAR (MAX) pour la transformer en string si la colonne est un 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