使用JDBC在PostgreSQL中进行java批插入
我想使用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将其推入数据库
# 1 楼答案
你需要以某种方式转换文件,是的
看起来它当前要么由可变数量的空格分隔,要么有固定宽度的字段。区别在于,如果2146.00改为312146.00会发生什么?它会像固定宽度那样运行到前面的字段“-112.48312146.00”,还是会添加一个空格,即使这会破坏列对齐
我不相信这两种方法都是直接由COPY支持的,所以一些转换是必要的。此外,-9999.00看起来像一个神奇的值,可能应该转换为NULL
# 2 楼答案
来自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.
看起来你的数据被删除了。因此,使用默认值应该是可行的