DashDB - Экспорт данных с использованием Java
Я использую DashDB (сервис Bluemix) и мне нужно экспортировать данные таблиц в мой код Java. Для этого я написал следующее...
String sql = "CALL SYSPROC.ADMIN_CMD(?)";
callStmt1 = conn.prepareCall(sql);
query = "export to exportData.IXF of IXF select * from nombres";
callStmt1.setString(1, query);
callStmt1.execute();
rs1 = callStmt1.getResultSet();
Но это не работает. Файл exportData.ixf не создается, но я не получаю код ошибки. Я использовал для выполнения этого кода в DB2. Знаете ли вы, можно ли делать то, что я делаю с DashDB? Если ответ да. Есть ли у вас предложения? Спасибо!!!
2 ответа
Команда EXPORT выполняется в dashDB и экспортирует файл в каталог, локальный для сервера dashDB. Поэтому, если вы хотите использовать EXPORT, вам потребуется дополнительный шаг для загрузки файла. Один из способов сделать это - использовать REST API здесь: https://developer.ibm.com/clouddataservices/wp-content/themes/projectnext-clouddata/dashDB/ (GET call to / home /... endpoint). Другой способ - использовать команду CLPPlus IDA: https://www.ibm.com/support/knowledgecenter/SS6NHC/com.ibm.swg.im.dashdb.clpplus.doc/doc/r0061925.html
Вот более конкретная процедура, которую я успешно проверил:
Создайте записываемый каталог в домашнем каталоге вашего пользователя, используя
/rscript
конечная точка:curl --user "<user>:<password>" -H "Content-Type: application/json" -d "{\"rScript\" : \"system('mkdir files;chmod 777 files')\"}" -X POST "https://<server>:8443/dashdb-api/rscript"
Запустить
EXPORT
команда (например, в clpplus) с квалифицированным выходным каталогом:export to /mnt/blumeta0/home/<user>/files/out.del of del select * from <your table>;
Загрузите выходной файл:
curl --user "<user>:<password>" -X GET "https://<server>:8443/dashdb-api/home/files/out.del"