我有一个csv文件,我需要导入我的数据库。
示例输入:
122545; bmwx3;新;红,黑,白,粉红
我希望最终输出如下:
INSERT INTO myTable VALUES ("122545", "bmwx3", "new", "red");
INSERT INTO myTable VALUES ("122545", "bmwx3", "new", "black");
INSERT INTO myTable VALUES ("122545", "bmwx3", "new", "white");
INSERT INTO myTable VALUES ("122545", "bmwx3", "new", "pink");
第4个元素是" sub-csv"包含未知数量的条目。但总是采用那种格式(没有")
理想情况下,我想在记事本++中使用正则表达式执行此操作,如果不可能,我将不得不编写脚本。
我认为首先我要做到这一点:
122545; bmwx3;新;红,黑,白,粉红
看起来像这样:
122545; bmwx3;新;红色
122545; bmwx3;新;黑
122545; bmwx3;新;白
122545; bmwx3;新;粉色
我的问题是我不知道匹配 sub -csv。甚至可以在 pure 正则表达式中执行此操作(无需编程)?
答案 0 :(得分:1)
当然不是最简单的方法,但它有效:
找到:^([^,]+;)(.+),([^,]+)$
替换为:$1$2\n$1$3
然后根据需要多次点击Replace all
!
答案 1 :(得分:1)
如果122545;bmwx3;new;
部分不已修复
分三步:
前往red,black,white,pink#LIMIT#122545;bmwx3;new;
:将(.*;)([^;]*)
替换为\2#LIMIT#\1
创建122545;bmwx3;new;red
叮咬:替换
(\w+)(?:,|(?=#LIMIT#))(?=.*#LIMIT#(.*))
\2\1\n
(请参阅demo)
删除#LIMIT#...
行:用空字符串替换^#LIMIT#.*
如果122545;bmwx3;new;
部分已修复
@ hjpotter的想法看起来很酷,你只需要用
替换,
\n122545;bmwx3;new;
还剩下什么
替换
^(\w*);(\w*);(\w*);(\w*)$
与
INSERT INTO myTable VALUES ("\1", "\2", "\3", "\4")
你很高兴去!