我正在将csv格式的数据集导入数据库。
csv文件的结构如下
零件编号,描述,Netto价格,Brutto价格,评论 11009,滚珠轴承,"22,09","38,05",“注意,这篇文章和koyo xxxxxx一样”
由于我还不熟悉正则表达式,有人能帮我一下吗?
或者为我编写perl脚本。
谢谢
发布于 2010-11-28 02:58:19
没有必要这样做;它可以单独在MySQL中完成。
LOAD DATA INFILE 'data.csv'
INTO TABLE prices
FIELDS
TERMINATED BY ','
ENCLOSED BY '"'
(partno, desc, @net, @gross, comment)
SET
net=REPLACE(@net, ',', '.'),
gross=REPLACE(@gross, ',', '.'),发布于 2010-11-28 02:46:37
如果您可以使用Vim (这是一个快速的开始)编辑CSV文件,那么在Vim中的这个命令将提供您想要的行为,假设输入是这样形成的("xx,yy"到"xx.yy"):
:%s/"\(\d\+\),\(\d\+\)"/"\1.\2"/g然后,您可以点击:wq保存文件并退出程序。该正则表达式(/"(\d+),(\d+)"/)也应该作为接受正则表达式的其他程序(或语言)的起点。
发布于 2010-11-28 02:45:56
因此,只有在浮点数位于由双引号分隔的字符串中时,才需要替换逗号。这是您想要的regexp:
/(?<=")(\d+),(\d+)(?=")/它只匹配{22;09}和{38;05}。
https://stackoverflow.com/questions/4295021
复制相似问题