Java 将数据加载到Postgreql问题(循环问题)

Java 将数据加载到Postgreql问题(循环问题),java,hibernate,csv,jdbc,orm,Java,Hibernate,Csv,Jdbc,Orm,我正在尝试将数据(CSV)加载到Postgresql中 问题:当我从CSV加载数据时,解析进行得很好(我可以从Sysout看到),但当我尝试加载到数据库时。我得到相同的值10000次。(与CSV中的值不同)。我无法诊断这个问题。请帮忙 以下代码从CSV读取输入: public class GeneratePeople { public Weather createUser() throws IOException { String csvFile

我正在尝试将数据(CSV)加载到Postgresql中

问题:当我从CSV加载数据时,解析进行得很好(我可以从Sysout看到),但当我尝试加载到数据库时。我得到相同的值10000次。(与CSV中的值不同)。我无法诊断这个问题。请帮忙

以下代码从CSV读取输入:

public class GeneratePeople {
          public Weather createUser() throws IOException {  
            String csvFile = "D:\\chick.csv";
            BufferedReader br = null;
            String line = "";
            String cvsSplitBy = ",";
            Weather u = new Weather();       
            br = new BufferedReader(new FileReader(csvFile));
            while ((line = br.readLine()) != null) {
                      // use comma as separator
            String[] wdata1 = line.split(cvsSplitBy);
                      //System.out.println("Data inserted Before:" +wdata1[4]);
            u.setMnet(wdata1[4]);
                  //System.out.println("Data inserted After:" +wdata1[4]);
                }
                return u;

          }
}
这是我的应用程序:

public class GeneratePeople {
          public Weather createUser() throws IOException {  
            String csvFile = "D:\\chick.csv";
            BufferedReader br = null;
            String line = "";
            String cvsSplitBy = ",";
            Weather u = new Weather();       
            br = new BufferedReader(new FileReader(csvFile));
            while ((line = br.readLine()) != null) {
                      // use comma as separator
            String[] wdata1 = line.split(cvsSplitBy);
                      //System.out.println("Data inserted Before:" +wdata1[4]);
            u.setMnet(wdata1[4]);
                  //System.out.println("Data inserted After:" +wdata1[4]);
                }
                return u;

          }
}
读取数据并将其推入PostGresql

public class Populate extends People {
    public static void main(String[] args) throws IOException {
        System.out.println("Loading data to pplhib");
        Populate p = new Populate();
        p.bulkGenerate(10000);
        System.out.println("!!!!Process Completed!!!!");
    }
    public void bulkGenerate(int count) throws IOException {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        try {
            GeneratePeople gen = new GeneratePeople();
            Transaction tx = session.beginTransaction();
            for (int n = 0; n < count; n++) {
                Weather p = gen.createUser();
                session.save(p);
                if (n % 100 == 0) {
                    session.flush();
                    session.clear();
                }
            }
            tx.commit();
        } finally {
            // session.close();
        }
    }
}
公共类填充扩展人员{
公共静态void main(字符串[]args)引发IOException{
System.out.println(“将数据加载到pplhib”);
填充p=新的填充();
p、 (10 000人);
System.out.println(!!!!进程已完成!!!!”);
}
public void bulkGenerate(int count)引发IOException{
会话会话=HibernateUtil.getSessionFactory().getCurrentSession();
试一试{
GeneratePeople gen=新一代人();
事务tx=会话.beginTransaction();
对于(int n=0;n
我得到相同的值10000次,而不是不同的值,但是我在generate people中使用的sysout显示了不同的值(正如预期的那样)。我哪里做错了

如何返回从
u.setMnet(wdata1[4])获取的值在退出while循环之前?为什么我在postgresql中得到相同的值


谢谢

PostgreSQL具有完美的内置CSV加载-复制语句。它比重复插入快100倍。createUser函数不是正在打开csv文件、读取所有行并始终返回最后一行吗?谢谢您的评论。看来你是对的。但是我不确定我怎么才能解决这个问题。。我应该使用数组吗?有人能解释一下吗?