Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用JDBC在PostgreSQL中进行批插入_Java_Postgresql_Batch File_Jdbc - Fatal编程技术网

Java 使用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

我想使用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 
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);