明文db文件的最佳分隔符/分隔符是什么?

Men*_* Lu 36 database sqlite delimiter

明文db文件的最佳分隔符/分隔符是什么?

我考虑过使用|,,,<TAB>,;,等但他们似乎都可能打破时,附近的项目有足够的特殊字符.

那么,有经验的数据库用户,你建议使用哪些分隔符?

小智 33

我认为最好的方法是加入三个樱桃'@@@'.

  • +1为可爱的at符号描述 (36认同)
  • 在意大利语中称他们为chiocciola或蜗牛 (9认同)
  • 由于缺乏解释/论证而进行下调.是什么让@@@与任何其他任意字符串或字符不同? (5认同)
  • @Wouter “@”符号在视觉上很突出,比其他常见符号字符(使用最常见的字体)填充了更多的空间。在实际数据中,单个 at 符号非常常见(电子邮件地址)。双at符号很常见(电子邮件地址拼写错误)。三个不太可能,并且在调试/测试/审核字符转义时很容易抽查(与换行符、空格、制表符、逗号、与号相比)。 (5认同)
  • 旁注:在奥地利,我们称 @“Klammeraffe”或蜘蛛猴。很容易看出原因 (3认同)
  • 如果必须匹配超过 1 个字符,这是否会降低 big(O) 的性能? (2认同)

p.c*_*ell 27

无论您选择哪个字符作为分隔符,您都希望在数据中转义该字符的任何实例.

也许是tilde(~),或者转到高位ASCII字符.

无论哪种方式,如果它有可能潜入您的数据,您需要在写入您的纯文本文件之前将其转义.

  • 如果您不知道您的数据是什么,那么您就无法选择分隔符.任何分隔符都可能破坏.实际上说:你的问题受到限制,没有正确的答案. (11认同)
  • +1.转义是_any_字符可以在数据中的唯一解决方案.我通常更喜欢`|`我自己(以及`\ |`和`\\`作为逃逸)但是波浪号和其他任何东西一样好. (4认同)
  • @Eqra ASCII 仅包含 127 个字符,但“High-ASCII”或“extended ASCII”扩展包含 255 个字符。https://en.wikipedia.org/wiki/Extended_ASCII(迟到总比不到好。) (3认同)
  • 这应该是一个实际的问题。我可以自由选择分隔符或字符串,但是我无法控制db单元格中可能出现的内容。在这种情况下,我要决定选择一个定界符字符/字符串,这将有很小的机会。 (2认同)

Mic*_*has 27

嗯,有几个分隔字符在US-ASCII,十六进制1c,1d,1e1f.纯文本不应包含它们.

1c  FS  ?  ^\  File Separator
1d  GS  ?  ^]  Group Separator
1e  RS  ?  ^^  Record Separator
1f  US  ?  ^_  Unit Separator
Run Code Online (Sandbox Code Playgroud)

  • 从本质上讲,这就是它们的作用,如果这成为标准,那就太好了。但是与此有关。并非所有的DB技术导入/导出工具都支持不可打印的分隔符。例如SQL Server的bcp。https://dba.stackexchange.com/questions/208982/use-non-printable-characters-in-sql-server-bcp-xml-format-file-as-terminator (2认同)

Cod*_*ute 11

实际上,这取决于您尝试分离的数据类型,我们需要一个机器事件数据的分隔符,并提出了其中的几个:

=)或者^_^

我们选择它是^_^因为它确实有效,基于测试的样本数量,而且它看起来也很可爱!


小智 10

对于我们控制源文件但逃避和限定繁重的特定数据仓库情况,我们能够做出业务决策,即从数据中剥离一个扩展的ASCII字符(如果它曾经发生,它没有"T).

在创建分隔的源文件时,我们在数据中删除了█(alt + 219)的任何实例,并将该字符用于分隔符.奖金,这个角色真的很容易被发现.


小智 5

我个人喜欢使用«作为分隔符来分割CSV文件中的数据,我个人认为我还没有找到自然发生的«和»实例,所以这里有两分钱。

  • 双V形(“«”和“»”)在多种语言中用作“引号”。最突出的是法语和意大利语。 (3认同)
  • 常用于中文书名 (2认同)

dim*_*ser 5

我通常更喜欢不可打印的字符,例如“\u0001”,例如,我在大多数 Azure 数据分析 U-SQL 脚本中使用它作为列分隔符。那是假设您可以使用多字符自定义分隔符