SQL:什么是分隔符?

时间:2017-08-16 23:47:33

标签: mysql sql

我正在我的网站上运行一些来自SQL数据库的内容。查询正在运行,一切都很好。我遇到的唯一问题是,当我使用phpmyadmin上传我的数据集(.csv格式)时,在某一行之后丢弃所有内容时会发生错误。据说这是由SQL识别该特定行中比预期更多的列引起的。不幸的是,这不仅仅是一次。我似乎无法确切地知道问题是什么,但很可能是由列中的某些值引起的'描述'包含将其拆分为多个列的分隔符。希望通过删除/替换所有这些分隔符,可以解决问题。我对SQL很陌生,我似乎无法找到一个简单地列出我应该考虑的所有潜在分隔符的来源。有人可以帮助我吗?

提前感谢您的注意!

此致

1 个答案:

答案 0 :(得分:1)

从个人经验来看,曾经可以划分许多不同的东西。我见过烟斗|和逗号,以及制表符,固定空间,tildas~和冒号:。

直接来自https://en.wikipedia.org/wiki/Delimiter-separated_values

“由于广泛使用,逗号和制表符分隔的文本文件可以通过多种应用程序打开,包括大多数电子表格程序和统计包,有时甚至没有用户指定使用了哪个分隔符。[5] [6]尽管每个应用程序都有自己的数据库设计和自己的文件格式(例如,accdb或xlsx),但它们都可以将DSV文件中的字段映射到它们自己的数据模型和格式。[citation needed]

通常,分隔文件格式由规范指示。某些规范提供了避免分隔符冲突的约定,而其他规范则没有。定界符冲突是一个问题,当作为数据一部分的字符被解释为分隔符时会发生。以逗号和空格分隔的格式经常遇到这个问题,因为在许多情况下,这些字符是数据字段的合法部分。

大多数此类文件通过包围双引号中的所有数据字段或仅引用包含分隔符字符的那些数据字段来避免分隔符冲突。制表符分隔文本文件的一个问题是制表符很难与空格区分开来;因此,当人们尝试手动编辑文件时,有时会出现文件损坏的问题。另一组问题是由于文件结构中的错误而发生的,通常是在将文件导入数据库期间(在上面的例子中,这样的错误可能是学生的名字丢失)。

根据数据本身,使用非标准字符(如波浪号(〜))作为分隔符可能是有益的。随着网站和其他应用程序在数据库中存储代码片段的普及,简单地使用“在每个超链接和图像源标签中发生的仅仅不足以避免这种类型的冲突。自冒号(:),半冒号(;),管道(|)和许多其他字符也被使用,找到一个没有在别处使用的字符可能非常具有挑战性。“