Изменить формат даты по умолчанию при экспорте данных набора результатов с помощью 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, которая должна выйти в ближайшие пару недель (я просто жду, когда основной участник этого релиза вернется с медового месяца).

Другие вопросы по тегам