有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用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将其推入数据库


共 (2) 个答案

  1. # 1 楼答案

    你需要以某种方式转换文件,是的

    看起来它当前要么由可变数量的空格分隔,要么有固定宽度的字段。区别在于,如果2146.00改为312146.00会发生什么?它会像固定宽度那样运行到前面的字段“-112.48312146.00”,还是会添加一个空格,即使这会破坏列对齐

    我不相信这两种方法都是直接由COPY支持的,所以一些转换是必要的。此外,-9999.00看起来像一个神奇的值,可能应该转换为NULL

  2. # 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.

    看起来你的数据被删除了。因此,使用默认值应该是可行的

    Filereader fr = new FileReader("mesowest.out.txt");
    cm.copyIn("COPY tablename FROM STDIN", fr);