2016-03-29 6 views
0

Ich versuche, eine CSV-Datei zu GreenPlum DB zu importieren,Laden CSV-Datei zu GreenPlum fehlgeschlagen auf Java

Es ist mit dem folgenden Befehl von psql Konsole arbeiten (9.4.0, Server 8.2.15)

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

Aber nicht, wenn ich es von meinem Java-Code versucht:

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; 
    } 
} 

die Ausnahme ist Syntaxfehler aufgrund des Backslash (\)

+0

Können Sie den Fehler hier veröffentlichen? – ManoDestra

Antwort

0

COPY gibt es in zwei verschiedenen Varianten, COPY und \ COPY: COPY ist serverbasiert, \ COPY ist clientbasiert. Wenn Sie einfach COPY ohne Backslash versuchen, sollte es funktionieren.

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(); 
} 

Das funktionierte perfekt für mich.

+0

Leider bedeutet dies, dass ich die Datei auf den Server hochladen muss, die ich vermeiden wollte. –

Verwandte Themen