在 java 上将 csv 文件加载到 GreenPlum 失败
Posted
技术标签:
【中文标题】在 java 上将 csv 文件加载到 GreenPlum 失败【英文标题】:Loading csv file to GreenPlum failed on java 【发布时间】: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;
例外是由于反斜杠(\)导致的语法错误
【问题讨论】:
你能把错误贴在这里吗? 【参考方案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();
这对我来说非常有效。
【讨论】:
不幸的是,这意味着我需要将文件上传到我想避免的服务器。以上是关于在 java 上将 csv 文件加载到 GreenPlum 失败的主要内容,如果未能解决你的问题,请参考以下文章
如何在前端(TS、React)上将 CSV 转换并下载到 XLSX
如何在 Postgresql 上将表格导出为带有标题的 CSV?