package com.walker.di; import java.util.List; /** * 数据导入器定义。

* 可用于导入外部资源到目标位置,如: *
 *     1)从csv导入到数据库表
 *     2)从数据库到数据库表
 *     3)其他等
 * 
* 该对象为有状态,需要在每次使用时创建实例,并调用实例的load方法。 * @author 时克英 * @date 2023-01-31 */ public interface DataImportor { /** * 加载并导入数据,业务调用该方法完成导入具体操作。 * @throws DataImportException */ void load() throws DataImportException; /** * 是否支持批量导入,对于大数据量导入会提高效率。

* 此时导入策略会启用批量加载并小块写入方式,避免内存溢出并提高效率。 *

* * @return */ boolean isBatchSupport(); /** * 是否支持断点续传(导入),如果支持,引擎会记录导入位置,并在下次重新导入时,从该位置开始。

* 但这需要提供唯一标识以确定要使用断点功能, * @return */ boolean isBrokenContinue(); /** * 设置允许批量导入,使用默认参数。 */ void setBatchEnabled(); /** * 设置批量导入的数量,默认不能超过:512 * @param batchSize */ void setBatchSize(long batchSize); /** * 设置是否支持断点续传(导入) * @param allow */ void setBrokenContinue(boolean allow); /** * 设置断点续传的标识,用于告知引擎需要使用该功能。 * @param brokenId */ void setBrokenId(String brokenId); /** * 获取导入数据的列名字集合。 * @return */ List getFieldNames(); /** * 设置导入数据列名字 * @param fieldNames */ void setFieldNames(List fieldNames); /** * 返回批量加载的数量。 * @return */ long getBatchSize(); /** * 返回批量加载错误,因为会多次持续执行,因此有可能整个过程执行完才能获得结果。需要测试 * @return * @date 2023-02-01 */ String getBatchError(); /** * 设置导入数据时,忽略的行数。

* 有时导入文件第一个可能是说明行,需要忽略,该方法可设置忽略多少行(这些行不导入)。 * @param number */ void setIgnoreRows(int number); /** * 设置批量导入时,每次保存间隔线程休眠时间,如果为0表示不休息。 * @param millSeconds 毫秒值 */ void setBatchSleepMills(long millSeconds); /** * 返回已经成功导入数量。 * @return */ long getSuccessSize(); /** * 导入唯一标识,由业务确定,在导入错误时,运行把错误结果重新导入 * @return */ String getId(); void setId(String id); /** * 返回导入错误结果文件路径,如: d:/file/12344566_error.csv * @return */ String getErrorFile(); /** * 设置'是否显示错误结果文件',如果显示则会为用户提供导入错误的结果文件。 * @param showError * @date 2023-02-02 */ void setShowError(boolean showError); /** * 设置保存文件的文件夹路径,如: d:/file/ * @param saveFileFolder */ void setSaveFileFolder(String saveFileFolder); /** * 设置导入数据中,表头有几行,支持多行表头。 * @param headRowNumber * @date 2023-02-03 */ void setHeadRowNumber(int headRowNumber); /** * 设置数据更新方式,如果在导入时需要判断数据是否存在,则可以设置该更新策略。

* 目前支持两种: 忽略、覆盖。 * @param updateType * @date 2023-02-05 */ void setUpdateType(UpdateType updateType); }