Я не уверен насчет вашего варианта использования, если есть ограничение или ограничение, что вам нужно иметь только Spring
партию.Кроме того, драйвер jdbc
говорит: Он не поддерживает пакет. , тогда я считаю, что нет способа заставить его работать.В качестве рекомендуемого подхода и передового опыта в Redshift
вместо insert statement
должна использоваться команда COPY
.Тем не менее, вы могли бы вызвать команду copy
, используя простой JDBC
. Это может быть хорошей идеей.
Вы можете взглянуть на один мой ответ , который я предоставил ранее.Я просто копирую / вставляю это, чтобы было удобно.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.util.Properties;
public class RedShiftJDBC {
public static void main(String[] args) {
Connection conn = null;
Statement statement = null;
try {
//Make sure to choose appropriate Redshift Jdbc driver and its jar in classpath
Class.forName("com.amazon.redshift.jdbc42.Driver");
Properties props = new Properties();
props.setProperty("user", "username***");
props.setProperty("password", "password****");
System.out.println("\n\nconnecting to database...\n\n");
//In case you are using postgreSQL jdbc driver.
conn = DriverManager.getConnection("jdbc:redshift://********url-to-redshift.redshift.amazonaws.com:5439/example-database", props);
System.out.println("\n\nConnection made!\n\n");
statement = conn.createStatement();
String command = "COPY my_table from 's3://path/to/csv/example.csv' CREDENTIALS 'aws_access_key_id=******;aws_secret_access_key=********' CSV DELIMITER ',' ignoreheader 1";
System.out.println("\n\nExecuting...\n\n");
statement.executeUpdate(command);
//you must need to commit, if you realy want to have data copied.
conn.commit();
System.out.println("\n\nThats all copy using simple JDBC.\n\n");
statement.close();
conn.close();
} catch (Exception ex) { ex.printStackTrace(); } } }
Надеюсь, это даст вам некоторое представление.Если у вас есть конкретный вопрос, добавьте комментарий, я смогу перефокусировать ответ.