web-dev-qa-db-fra.com

Quel est le meilleur caractère séparateur/délimiteur pour un fichier de base de données en texte brut?

Quel est le meilleur caractère séparateur/délimiteur pour un fichier de base de données en texte brut?

J'ai envisagé d'utiliser |, ,, <TAB>, ;, etc. Mais ils semblent tous être possibles pour rompre lorsque les entrées à proximité ont suffisamment de caractères spéciaux. 

Alors, utilisateurs de bases de données expérimentés, quel (s) caractère (s) délimiteur (s) suggérez-vous utiliser?

21
Meng Lu

Quel que soit le caractère que vous choisissez comme séparateur, vous souhaiterez échapper à toute occurrence de ce caractère dans vos données.

Peut-être un tilde (~) ou un caractère ASCII élevé.

Quoi qu'il en soit, s'il y a un risque que cela se glisse dans vos données, vous voudrez bien y échapper avant d'écrire dans votre fichier texte.

20
p.campbell

Je pense que la meilleure façon de joindre la chaîne avec un trois cerises '@@@'.

20
Emis

Eh bien, il existe peu de séparateurs caractères en US-ASCII, hex 1c, 1d, 1e et 1f. Le texte en clair ne devrait pas les contenir.

1c  FS  ␜  ^\  File Separator
1d  GS  ␝  ^]  Group Separator
1e  RS  ␞  ^^  Record Separator
1f  US  ␟  ^_  Unit Separator
13
Michas

Pour une situation d'entreposage de données particulière où nous contrôlions le fichier source, mais échappions et qualifications s'avéraient coûteuses, nous avons été en mesure de décider de l'entreprise d'un caractère étendu ASCII serait supprimé des données (le cas échéant). qu’il n’a pas). 

Lors de la création du fichier source délimité, nous avons supprimé toutes les occurrences de (alt + 219) dans les données et avons utilisé ce caractère pour le délimiteur. Bonus, ce personnage est vraiment facile à repérer.

8
japage

Vous pouvez utiliser les caractères de séparation spéciaux (hex 1c -> 1f), mais ils ne sont pas imprimables et certaines technologies ont des problèmes de traitement des données les contenant.

Donc, plan B, si vos données sont en UTF-8, vous pouvez choisir un caractère aléatoire UTF-8 dont il est très peu probable que extrêmement apparaisse dans les données source que vous recevez. 

Cependant, même dans ce cas, si vous voulez être sûr de ne pas rencontrer de problèmes, vous devez toujours analyser tout votre jeu de données à la recherche de ce caractère et, s'il apparaît, choisissez simplement un autre caractère UTF-8.

J'ai tendance à haïr l'encapsulation avec passion et à l'éviter autant que possible, comme expliqué dans mon post sous le chapitre "encapsulation" ici: https://theonemanitdepartment.wordpress.com/2014/12/15/the-absolute- minimum-tout-le-monde-travaillant-avec-les-données-absolument-positivement-incontournables-types-fichiers-encodage-délimiteurs-et-types-données-sans excuses/

2
Wouter

Personnellement, j'aime bien utiliser «comme caractère de délimitation pour fractionner les données dans des fichiers CSV. Je ne pense pas avoir jamais trouvé une instance naturelle de« et »personnellement.

2

Si vous avez l'option d'une chaîne comme séparateur de colonne, utilisez "" comme séparateur. Vous pouvez composer n'importe quelle ficelle et vous donner de la flexibilité.

1
svargh

Je préfère généralement les caractères non imprimables tels que "\ u0001". Je l'utilise par exemple comme séparateur de colonne dans la plupart de mes scripts U-SQL Azure Data Analytics. En supposant que vous puissiez utiliser un délimiteur personnalisé multi-caractères

0
Saul Cruz

J'avais déjà utilisé un convertisseur ePUB et le caractère de délimitation était le caractère de citation notionnel. Partout où il avait été utilisé, il serait réécrit dans un fichier @, simple mais efficace même s'il détruisait le matériel échantillon produit.

0
EasY_COding

Si vous ne pouvez pas contrôler les données qui y sont insérées, n'utilisez pas de base de données en texte brut. Il ne peut y avoir aucune bonne réponse généralement ici. Sans contexte ni contraintes, cette question est fausse.

À savoir: Si je disais que je n'accepterai que les minuscules comme données, je pourrais utiliser n'importe quel autre symbole comme séparateur. Même, disons, le chiffre 9 et tout irait bien. Aucun symbole autre qu'un caractère minuscule ne serait meilleur qu'un autre. 

Inversement, si je pouvais accepter n'importe quel caractère, il ne me resterait plus de caractères pour un séparateur et il me resterait une base de données très désolée qui ne pourrait stocker qu'une seule valeur.

Si vous devez essayer trop d'obtenir votre base de données en texte brut, vous voulez probablement une base de données binaire. Avez-vous regardé sqlite? Il est très facile à utiliser, il est disponible dans de nombreux contextes et comporte de nombreux avantages par rapport à une base de données en texte brut.

0
Chris Subagio