Java 使用JDBC在PostgreSQL中进行批插入
我想使用JDBC在postgresql中插入一个文件。 我知道要使用下面的命令,但下载的文件没有使用分隔符(“|”或“,”)进行解析 我的文件如下所示:Java 使用JDBC在PostgreSQL中进行批插入,java,postgresql,batch-file,jdbc,Java,Postgresql,Batch File,Jdbc,我想使用JDBC在postgresql中插入一个文件。 我知道要使用下面的命令,但下载的文件没有使用分隔符(“|”或“,”)进行解析 我的文件如下所示: 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
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将其推入数据库?来自postgres文档
分隔符:在文件的每行(行)中分隔列的单个字符。默认为文本模式下的制表符,CSV模式下的逗号。
看起来您的数据已被删除。因此,使用默认值应该是可行的
Filereader fr = new FileReader("mesowest.out.txt");
cm.copyIn("COPY tablename FROM STDIN", fr);
您需要以某种方式转换文件,是的 看起来它当前由可变数量的空格分隔,或者具有固定宽度的字段。区别在于,如果2146.00更改为312146.00,会发生什么?它是否会像固定宽度一样运行到前面的字段“-112.48312146.00”,或者您是否会添加一个空格,即使这会破坏列对齐 我不相信这两种方法都是由COPY直接支持的,所以需要进行一些转换。而且,-9999.00看起来像是一个神奇的值,可能应该转换为NULL
Filereader fr = new FileReader("mesowest.out.txt");
cm.copyIn("COPY tablename FROM STDIN", fr);