比如我想将.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的行。原文链接:https://www.f2er.com/regex/360300.html