Выгрузка данных из Amazon RedShift в Amazon S3 - PullRequest
0 голосов
/ 02 сентября 2018

Я пытаюсь использовать следующий код для выгрузки данных в корзину S3. Который работает, но после выгрузки выдает некоторую ошибку

 Properties props = new Properties();
 props.setProperty("user", MasterUsername);
 props.setProperty("password", MasterUserPassword);
 conn = DriverManager.getConnection(dbURL, props);
 stmt = conn.createStatement(); 
 String sql;
 sql = "unload('select * from part where p_partkey in (select p_partkey from 
       part limit 10)') to"
       + " 's3://redshiftdump.****' "
       + " DELIMITER AS ','"
       + "ADDQUOTES " 
       + "NULL AS ''"
       + "credentials 'aws_access_key_id=****;aws_secret_access_key=***' "
       + "parallel off" + 
       ";"; 
 boolean i = stmt.execute(sql);
 stmt.close();
 conn.close();

Разгрузочные работы. Это создание файла в ведре. Но это дает мне ошибку

   java.sql.SQLException: 
      dataengine.impl.DSISimpleRowCountResult cannot be cast to 
      com.amazon.dsi.dataengine.interfaces.IResultSet
   at 
   com.amazon.redshift.core.jdbc42.PGJDBC42Statement.createResultSet(Unknown 
   Source)
   at com.amazon.jdbc.common.SStatement.executeQuery(Unknown Source)

что это за ошибка и как ее избежать? Есть ли способ вывести таблицу в формате CSV. Сейчас он выгружает файл в формате FILE.

1 Ответ

0 голосов
/ 05 сентября 2018

Вы говорите, что UNLOAD работает, но вы получаете эту ошибку, которая подсказывает мне, что вы успешно подключаетесь, но есть проблема в том, как ваш код взаимодействует с драйвером JDBC, когда запрос завершается.

Мы предоставляем пример, который может быть полезен в нашей документации на странице «Программно подключиться к вашему кластеру»

Что касается формата выходного файла, вы получите все, что указано в вашем UNLOAD SQL, но к имени файла будет добавлен суффикс (например, «000» или «6411_part_00»), чтобы указать, какая это часть UNLOAD.

...