Java 将数据加载到Postgreql问题(循环问题)
我正在尝试将数据(CSV)加载到Postgresql中 问题:当我从CSV加载数据时,解析进行得很好(我可以从Sysout看到),但当我尝试加载到数据库时。我得到相同的值10000次。(与CSV中的值不同)。我无法诊断这个问题。请帮忙 以下代码从CSV读取输入: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
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文件、读取所有行并始终返回最后一行吗?谢谢您的评论。看来你是对的。但是我不确定我怎么才能解决这个问题。。我应该使用数组吗?有人能解释一下吗?