CSV双字符分隔符数据导入数据库的尝试

CSV是逗号分隔符文件,各列数据使用逗号作为分隔符,通用性较强,无论是记事本、EXCEL、各种文本处理工具或者数据库都能处理。曾经遇到过这样的问题,将某CSV文件数据导入数据库处理,该CSV文件分隔符不是逗号,而是两个字符||,为了解决这个问题,进行了一些尝试,成功导入了数据库。现对这些方法进行记录,以供以后使用。

一、该CSV原始数据的特点

接触到的CSV数据是从其他数据库导出的,各列使用双字符||作为分隔符,第一行为标题,但是导出设置应该有问题,例如空列没有任何标记,也就是说存在||||两次分隔符相连的情况,不太规范。

因此最开始尝试用EXCEL打开数据,先看看整体情况时,如果可行的话,将该EXCEL数据直接导入数据库,此方法尝试失败。EXCEL数据分列时有选项“连续分隔符作为单个处理”,由于数据中空列没有任何标记,将连续分隔符作为单个处理显然行不通,会把连续4个、6个、8个等等视为一个。

二、将双分隔符替换成单字符

之后,尝试了一种新方法,将双字符整体替换成单字符,这样直接导入数据库就不存在问题了。计划将分隔符替换成逗号,首先在整个CSV文件中查询不存在逗号,替换掉之后,数据完全变成了逗号分隔符文件,该方法成功。

三、先创建表结构再导入

数据库使用的是MariaDb,客户端是系统自带的HeidiSql,导入CSV数据时,能自动识别标题和数据。其实,在尝试上面的方法时,想过直接导入数据库,分隔符输入||,但是不知为何一直出错。如果使用上面的方法,将数据变成逗号分隔符文件,再直接导入数据库,不存在什么问题。

但是,如果数据量比较大,无法替换成常见的单字符时,如何解决?所以还是要想一个终极解决办法。经过尝试,先在数据库中建立表结构,然后导入CSV数据,并将分隔符输入||,成功导入。注意,前面尝试过直接导入CSV,自动识别标题,失败了。这次能成功,是因为提前建立了表结构。