使用正则表达式解决CSV文件导入问题

本文介绍了一种从CSV文件导入数据到SQLite数据库的方法,并解决了字段中包含逗号引起的数据解析错误问题。通过使用正则表达式进行文本预处理,确保了数据的正确导入。

CSV文件一般扮演不同数据库之间转换数据的中间文件。

比如我想将.mdb后缀的MS-Access格式转换成sqlite3格式,就要先将mdb导出成csv,再在sqlite3里导入

  sqlite> create table test (id integer, datatype_id integer, level integer, meaning text);
  sqlite> .separator ","
  sqlite> .import no_yes.csv test

导的过程中出现个问题,就是有些字段中间包含逗号,导致sqlite3报错

Error: chengyu_comma.txt line 802: expected 6 columns of data but found 7

多了一个字段,其实就是某个字段包含逗号被解析成2个字段

如何区分字段内/字段间这两种逗号

正则表达式派上用场了

用vim执行以下命令

%s/[^\"]\,/,/g
上面总体来说就是一个vim的全局替换指令,将半角逗号替换成不被sqlite识别的全角逗号

[]       匹配一个指定范围内的字符,如/[Ss]ed/匹配sed和Sed。
[^]     匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值