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 | | F**e 发帖数: 593 | 7 多谢各位!包子已发。
暂时用的是goodbug's simple solution. 自己觉得这个办法有点笨,但想想我这里
performance没什么concern, 先这样用吧,等其他搞完了再回来找找其他办法,也试试
楼上的一些建议。 |
|