Изменить формат даты по умолчанию при экспорте данных набора результатов с помощью OpenCSV
Я пытаюсь экспортировать данные в CSV с помощью OpenCSV.
База данных - это Universe Db, и CSV генерирует штраф с "$" в качестве разделителя.
Однако, когда мы попытались загрузить те же данные CSV в базу данных IBM DB2, произошел сбой из-за несовместимого формата даты (т.е. DD-MMM-YYYY
), поскольку IBM DB2 не поддерживает этот формат.
Код для генерации CSV:
private CSVWriter writer;
writer = new CSVWriter(new OutputStreamWriter(new FileOutputStream(savePath + "\\" + tableName+ ".csv"),"UTF-8"), '$',CSVWriter.NO_QUOTE_CHARACTER);
writer.writeAll(rs, false); //rs is the resultset returned for the select query
writer.flush();
Мы загружаем CSV, используя команду DB2 load & imp.
Как изменить формат даты по умолчанию при создании CSV?
Цель упражнения: загрузить данные из базы данных Universe в базу данных IBM DB2.
Примечание: Universe DB не поддерживает обновление результирующего набора, поэтому этот параметр не был принят во внимание:)
1 ответ
Попробуйте использовать настраиваемый ResultSetHelperService:
String filemane = "export.csv";
CSVWriter csvWriter = new CSVWriter(new FileWriter(filename));
ResultSetHelperService resultService = new ResultSetHelperService();
resultService.setDateFormat("yyyy-MM-dd");
resultService.setDateTimeFormat("yyyy-MM-dd HH:mm:ss");
csvWriter.setResultService(resultService);
В настоящее время в сборке ствола openCSV в ResultSetHelperService внесены изменения, позволяющие установить формат даты и даты и времени в желаемом формате, а затем вы можете вызвать setResultSetHelper в CSVWriter, который вы создаете, перед обработкой результирующего набора.
Они появятся в сборке 3.6, которая должна выйти в ближайшие пару недель (я просто жду, когда основной участник этого релиза вернется с медового месяца).