加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 01:13:54 所属栏目:百科 来源:网络整理
导读:CSV文件一般扮演不同数据库之间转换数据的中间文件。 比如我想将.mdb后缀的MS-Access格式转换成sqlite3格式,就要先将mdb导出成csv,再在sqlite3里导入 sqlite create table test (id integer,datatype_id integer,level integer,meaning text); sqlite .sep

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的行。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读