Java 如何在将数据导入db时将csv文件头名称映射到db表

Java 如何在将数据导入db时将csv文件头名称映射到db表,java,csv,Java,Csv,我已经写了这个程序。如何将第一列映射到“Slno”,第二列映射到“COM_总线”。因为,csv文件不像表那样包含正确的标题。 示例: CSV文件头具有“sln”“C_总线” 表“业务”有一列有“SLNO”“COMBUS” 我的问题是,在将数据导入db2表时,不应该关注csv文件头。请帮忙 私人静态决赛 String SQL_INSERT = "INSERT INTO OPTYMGT.${table}(${keys}, RUN_TS) VALUE

我已经写了这个程序。如何将第一列映射到“Slno”,第二列映射到“COM_总线”。因为,csv文件不像表那样包含正确的标题。 示例:
CSV文件头具有“sln”“C_总线”

表“业务”有一列有“SLNO”“COMBUS”

我的问题是,在将数据导入db2表时,不应该关注csv文件头。请帮忙

私人静态决赛

String SQL_INSERT = "INSERT INTO OPTYMGT.${table}(${keys}, RUN_TS)   
                       VALUES(${values}, current_timestamp)";

private static final String TABLE_REGEX = "\\$\\{table\\}";
private static final String KEYS_REGEX = "\\$\\{keys\\}";
private static final String VALUES_REGEX = "\\$\\{values\\}";

private char seprator= ',';




public boolean loadCSV(Connection connection,String csvFile, String tableName) throws Exception {
    boolean  result = true;
    CSVReader csvReader = null;
    if(connection == null) {
        throw new Exception("Not a valid connection.");
    }
    try {

        csvReader = new CSVReader(new FileReader(csvFile), this.seprator);
        //System.out.println("csvReader" +csvReader);

    } catch (Exception e) {
        e.printStackTrace();
        throw new Exception("Error occured while executing file. "
                + e.getMessage());
    }

    String[] headerRow = csvReader.readNext();

    //System.out.println("headerRow" +headerRow);

    if (null == headerRow) {
        throw new FileNotFoundException(
                "No columns defined in given CSV file." +
                "Please check the CSV file format.");
    }

    String questionmarks = StringUtils.repeat("?,", headerRow.length);
    questionmarks = (String) questionmarks.subSequence(0, questionmarks.length() - 1);
    String query = SQL_INSERT.replaceFirst(TABLE_REGEX, tableName);
    query = query.replaceFirst(KEYS_REGEX, StringUtils.join(headerRow, ","));
    query = query.replaceFirst(VALUES_REGEX, questionmarks);

    //System.out.println("Query: " + query);

/*  SimpleDateFormat cDate = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
    Date now = new Date();
    String ccDate = cDate.format(now);
    System.out.println("ccdate" +ccDate);*/

    String[] nextLine;
    Connection con = null;
    PreparedStatement ps = null;

我遇到了类似的情况,解决方法是使用Java属性包创建一个配置文件,将bean变量映射到头。我使用
opencsv
将csv映射到Java对象。但是,在此之前,我会检查文件是否有标题,如果没有,我会将标题写入csv的第一行。因为我使用了
opencsv
,所以我对类变量进行了注释以定义映射。我希望有帮助


我很高兴在假期后分享代码

所以,你是说这个程序从CSV的第一行读取列名,但是你想忽略第一行并使用不同的列名吗?如果是这样:您预先知道列名,可以在SQL中硬编码它们,还是希望在运行时查看dataabse并计算列名?是否有原因尝试重新编写
IMPORT
LOAD
实用程序?