由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Java版 - 请教:parse CSV文件
相关主题
Question about tabRe: GridLayout一问
hibernate高手求助how to print starting from specific pos?
读文件时,如何才能只将空白符当成分隔符?automated web article poster
为什么大家都要用delimted string穿value呢?问一个关于pdf的问题
请问JSP/SERVLET和MYSQL如何实现照片上载和调用介绍个做web的framework吧!
Jsp-Mysql for multitype resources再问一个
Spring JDBC无法正确插入blob到MySQLGenerate Unique ID for an existing Oracle Table
JTable column sorting problem.Wierd issue with Cassandra
相关话题的讨论汇总
话题: csv话题: dump话题: __话题: text话题: 文件
进入Java版参与讨论
1 (共1页)
F**e
发帖数: 593
1
这个文件是MySQL dump出来的CSV, 所以每个column都是逗号(,)分开的,问题是有
一个column是blob, dump出来是text, text里本身含有逗号,在文中显示 \, 比如说这
一行:
1,2,a\, b,4
一共应该是4个columns, 如果用String.split(",")的话,就把当中的text给拆掉了。
应该输出是
1
2
a, b
4
怎么搞啊?包子答谢! //bow
Z****e
发帖数: 2999
2
简单方法:现改dump文件的结构,把blob放在最后一个column,然后用split(regex,
limit)函数限制最多能分出来的列数

【在 F**e 的大作中提到】
: 这个文件是MySQL dump出来的CSV, 所以每个column都是逗号(,)分开的,问题是有
: 一个column是blob, dump出来是text, text里本身含有逗号,在文中显示 \, 比如说这
: 一行:
: 1,2,a\, b,4
: 一共应该是4个columns, 如果用String.split(",")的话,就把当中的text给拆掉了。
: 应该输出是
: 1
: 2
: a, b
: 4

g*****g
发帖数: 34805
3
A simple solution, replace "\," with a special string which won't occur,
e.g "__temp__", split, then replace "__temp__" with "," one by one.
If you want good performance, use StringTokenizer

【在 F**e 的大作中提到】
: 这个文件是MySQL dump出来的CSV, 所以每个column都是逗号(,)分开的,问题是有
: 一个column是blob, dump出来是text, text里本身含有逗号,在文中显示 \, 比如说这
: 一行:
: 1,2,a\, b,4
: 一共应该是4个columns, 如果用String.split(",")的话,就把当中的text给拆掉了。
: 应该输出是
: 1
: 2
: a, b
: 4

b******y
发帖数: 9224
4
I guess you should dump to TAB separated file, if possible. To keep it
simple and easy for ya.
c*****t
发帖数: 1879
5
The presence of \, might indicate that \\ or other escape sequences.
Couple with error detection, it is a pain to write a perfect parser
by hand.
(btw, I think the standard CSV uses double quote for literals. It
is a bit strange to use \,)
Java's regular expression is not particularly efficient.
The best way is to use a lex tool (like my CookCC which is for Java)
to deal with this situation.

【在 g*****g 的大作中提到】
: A simple solution, replace "\," with a special string which won't occur,
: e.g "__temp__", split, then replace "__temp__" with "," one by one.
: If you want good performance, use StringTokenizer

g**********y
发帖数: 14569
6
input.replaceAll("(?
F**e
发帖数: 593
7
多谢各位!包子已发。
暂时用的是goodbug's simple solution. 自己觉得这个办法有点笨,但想想我这里
performance没什么concern, 先这样用吧,等其他搞完了再回来找找其他办法,也试试
楼上的一些建议。
1 (共1页)
进入Java版参与讨论
相关主题
Wierd issue with Cassandra请问JSP/SERVLET和MYSQL如何实现照片上载和调用
JSF 链接中的变量Jsp-Mysql for multitype resources
Introducting a better way of pattern handlingSpring JDBC无法正确插入blob到MySQL
math expressionJTable column sorting problem.
Question about tabRe: GridLayout一问
hibernate高手求助how to print starting from specific pos?
读文件时,如何才能只将空白符当成分隔符?automated web article poster
为什么大家都要用delimted string穿value呢?问一个关于pdf的问题
相关话题的讨论汇总
话题: csv话题: dump话题: __话题: text话题: 文件