我有一个unicode文件需要导出到数据库(vertica)。列分隔符是ctrl+b,记录分隔符是换行符(\n)。每当列值中有换行符时,ctrl+a将用作转义符。
当我使用bufferedreader.readline()读取这个文件时,id为2和4的记录被读取为两条记录。而我想把它们作为输出中给出的单个完整记录来读取。
下面是输入文件的示例表示ctrl+b,^表示ctrl+a。
Input
ID|Name|Job Desc
----------------
1|xxxx|SO Job
2|YYYY|SO Careers^
Job
3|RRRRR|SO
4|ZZZZ^
ZZ|SO Job
5|AAAA|YU
Output:
ID|Name|Job Desc
----------------
1|xxxx|SO Job
2|YYYY|SO Careers Job
3|RRRRR|SO
4|ZZZZ ZZ|SO Job
5|AAAA|YU
文件很大,所以我不能使用stringescapeutils。有什么建议吗?
2条答案
按热度按时间ttygqcqt1#
你可以使用
Scanner
用一个定制的delimeter。我使用的delimeter设置为匹配\n
但不是\u0001\n
(其中\u0001
代表CTRL+A
):wkyowqbh2#
蒂姆的回答有一部分是对的。但是,它仍然不能解析由ctrl+a转义的新行。
下面是我的解决方案(由tim answer指导)
如果有其他有效的方法,我也很想知道。