我想使用JDBC将文件插入postgresql。 我知道下面的命令要使用,但下载的文件没有使用分隔符(“|”或“,”)进行解析
Filereader fr = new FileReader("mesowest.out.txt");
cm.copyIn("COPY tablename FROM STDIN WITH DELIMITER '|'", fr);
我的文件如下:
ABAUT 20131011/0300 8.00 37.84 -109.46 3453.00 21.47 8.33 241.90
ALTU1 20131011/0300 8.00 37.44 -112.48 2146.00 -9999.00 -9999.00 -9999.00
BDGER 20131011/0300 8.00 39.34 -108.94 1529.00 43.40 0.34 271.30
BULLF 20131011/0300 8.00 37.52 -110.73 1128.00 56.43 8.07 197.50
CAIUT 20131011/0300 8.00 38.35 -110.95 1381.00 54.88 8.24 250.00
CCD 20131011/0300 8.00 40.69 -111.59 2743.00 27.94 8.68 285.40
所以我的问题是..是否有必要将分隔符附加到此文件以使用jdbc将其推送到数据库中?
答案 0 :(得分:1)
来自postgres文档
delimiter : The single character that separates columns within each row (line) of the file. The default is a tab character in text mode, a comma in CSV mode.
看起来您的数据是制表符分隔符。所以使用默认值应该有效。
Filereader fr = new FileReader("mesowest.out.txt");
cm.copyIn("COPY tablename FROM STDIN", fr);
答案 1 :(得分:1)
您需要以某种方式转换文件,是的。
它看起来当前由可变数量的空格分隔,或者它具有固定的宽度字段。不同的是,如果将2146.00更改为312146.00会发生什么?它会像“-112.48312146.00”一样进入前一个字段,就像固定宽度一样,或者你是否会添加空格,即使这会破坏列对齐?
我不相信COPY直接支持其中任何一个,因此需要进行一些转换。此外,-9999.00看起来像一个应该转换为NULL的魔术值。