记录SQLite处理185万行中文文本的操作姿势(关键字:txt/csv/sqlite)

前两天拿到一份2018年的数据库,内容是跟全国XX数据有关,不方便透露,数据的内容不是本文的重点。

数据库的情况:每一行为一条记录,共185万行,每行有多条字段,字段内容有中文/英文/数字,字段间隔符号是英文逗号(,)其实就是CSV的保存格式,但是文件是以txt格式保存,需要把2019年更新的内容增删改进去。输出的文件,依然是按照原来的txt格式。


思路:Excel和Numbers最大行数貌似只有65535行,无法满足本次数据处理的需求。所以决定先把内容存储为CSV后导入轻量化的SQLite,再通过SQL语句做增删改的操作。


数据前置准备:

使用Mac Sublime Text 3打开2018年的txt文件,中文部分是乱码,通过解决GBK/ANSI编码下的中文乱码问题后打开正常显示,复制全部内容。

继续使用Sublime Text 3新建文件,把2018年的全部记录粘贴到新建的文件,保存为CSV格式,这里就把准备好的数据叫做2019csv吧。

把2018年的表头信息整理,确认数据类型,做好创建数据表头信息和数据导入的前提准备。


导入数据库处理:

使用SQLPro for SQLite创建SQLite3数据库保存为2019csv.sqlite3数据库,创建对应的表信息,导入2019csv文件,过程很顺利,检查所有的字段都能正常显示中文/英文/数字,准备用SQL语句开始干活时,在Query窗口发现特码不能输入中文…故放弃,坑爹啊!但是也没有把数据库删掉,留着下一部用。

使用DB Browser for SQLite,这货是开源的,且支持N种语言,舒服。把上一步骤的数据库直接搬过来用(估计CSV直接导入到这个软件新建的数据库应该也ok),可以使用中文增删改,爽歪歪。


导出数据库:

经过SQL语句一阵狂轰乱炸估计改了几万条数据,输出可以直接导出csv文件,选择Windows换行的格式,把输出后的csv文件改成txt完成任务交差。

额…又多了个需求需要删掉其中两列再输出一份,发现DB Browser for SQLite貌似不支持这个功能,再次打开放弃的SQLPro for SQLite居然可以直接删除,安逸的一笔,删除后再用DB Browser for SQLite导出即可。

评论