【问题标题】:Loading csv file to GreenPlum failed on java在 java 上将 csv 文件加载到 GreenPlum 失败
【发布时间】:2016-03-29 16:36:01
【问题描述】:

我正在尝试将 csv 文件导入 GreenPlum DB,

它正在使用来自 psql 控制台(9.4.0,服务器 8.2.15)的以下命令

\COPY data."TableName" FROM 'D:/Document.csv' DELIMITER ',' CSV;

但是当我从我的 java 代码中尝试它时失败了:

public boolean InsertFile(Path tempFile, FileDetails file) {
   try{
       Connection conn =  GetConnectionString();

       String cmd = "\\COPY data.\"TableName\" FROM 'D:/Document.csv' DELIMITER ',' CSV;";

       Statement st = conn.createStatement();
       int res = st.executeUpdate(selectCmd);

       conn.close();
       return true;
   }
   catch(Exception e){
       return false;
   }
}

例外是由于反斜杠(\)导致的语法错误

【问题讨论】:

  • 你能把错误贴在这里吗?

标签: java postgresql csv jdbc greenplum


【解决方案1】:

COPY 有两个不同的变体,COPY 和\COPY:COPY 是基于服务器的,\COPY 是基于客户端的。如果您只是尝试不带反斜杠的 COPY,它应该可以工作。

public static void main(String[] args) throws Exception {
    String url = "jdbc:postgresql://localhost:54380/gpadmin";
    Properties props = new Properties();
    props.setProperty("user","gpadmin");
    props.setProperty("password","changeme");
    Connection conn = DriverManager.getConnection(url, props);

    String cmd = "COPY timeout FROM '/tmp/timeout.csv' DELIMITER ',' CSV;";

    Statement st = conn.createStatement();
    int res = st.executeUpdate(cmd);
    System.out.println(res);

    conn.close();
}

这对我来说非常有效。

【讨论】:

  • 不幸的是,这意味着我需要将文件上传到我想避免的服务器。
猜你喜欢
  • 2012-08-16
  • 2019-10-23
  • 2017-09-13
  • 1970-01-01
  • 2018-03-30
  • 1970-01-01
  • 2018-06-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多