Mysql 如何用java在数据库中插入excel数据
我想将excel文件中的数据插入到使用java的UNIX服务器中的本地数据库中,而不需要对数据进行任何操作 1-有人告诉我,我必须将excel文件扩展名转换为.csv以符合unix。我用一个宏为每张工作表(12页)创建了一个CSV文件。问题是它将日期格式从DD-MM-YYYY更改为MM-DD-YYYY。如何避免这种情况 2-我使用LOAD DATA命令将CSV文件中的数据插入数据库。excel文件中有一个可选指定的日期列。因此,在CSV中,它变为,,因此加载数据不起作用(需要参数)。我怎样才能解决这个问题?Mysql 如何用java在数据库中插入excel数据,mysql,excel,unix,datetime,vba,Mysql,Excel,Unix,Datetime,Vba,我想将excel文件中的数据插入到使用java的UNIX服务器中的本地数据库中,而不需要对数据进行任何操作 1-有人告诉我,我必须将excel文件扩展名转换为.csv以符合unix。我用一个宏为每张工作表(12页)创建了一个CSV文件。问题是它将日期格式从DD-MM-YYYY更改为MM-DD-YYYY。如何避免这种情况 2-我使用LOAD DATA命令将CSV文件中的数据插入数据库。excel文件中有一个可选指定的日期列。因此,在CSV中,它变为,,因此加载数据不起作用(需要参数)。我怎样才能解
感谢您的帮助我们正在java应用程序中使用。它是无服务的,使用非常简单并且非常高效。将EXCEL文件保存为CSV(逗号分隔值)格式。通过相当简单地使用StringTokenizer,可以轻松阅读和解析 使用MySQL(或SQLite,具体取决于您的需要)和JDBC将数据加载到数据库中 以下是我开发的CSVEnumeration一级:
package com.aepryus.util;
import java.util.*;
public class CSVEnumeration implements Enumeration {
private List<String> tokens = new Vector<String>();
private int index=0;
public CSVEnumeration (String line) {
for (int i=0;i<line.length();i++) {
StringBuffer sb = new StringBuffer();
if (line.charAt(i) != '"') {
while (i < line.length() && line.charAt(i) != ',') {
sb.append(line.charAt(i));
i++;
}
tokens.add(sb.toString());
} else {
i++;
while(line.charAt(i) != '"') {
sb.append(line.charAt(i));
i++;
}
i++;
tokens.add(sb.toString());
}
}
}
// Enumeration =================================================================
public boolean hasMoreElements () {
return index < tokens.size();
}
public Object nextElement () {
return tokens.get(index++);
}
}
我建议使用MySQL,因为它的性能和明显的开源特性 这里有两种情况:
使用ApachePOI从Excel中读取值应该很容易。然后,您可以省去转换为另一种格式的额外步骤,以及当数据包含逗号并转换为CSV时可能出现的问题 编码器:我所需要的就是插入数据而不需要任何操作。我有个问题,我的excel文件有很多表格。当我将文件转换为csv时,它只复制一张工作表。@daria-很简单,你必须将每张工作表分别保存为csv。。就这些,兄弟..我把每张纸都复制到了CSV文件中。它起作用了,但是它改变了日期格式(不是2010年7月9日,而是2010年9月7日)。如何解决这个问题?为什么不将日期值作为字符串处理。。试试看..我读到StringTokenizer不推荐使用,最好使用Split。你真的认为使用StringTokenizer更容易吗?StringTokenizer并没有被弃用,但我确实看到.split()现在是首选方法。我必须做一些研究,但我猜它们同样容易使用。无论如何,我会发布一些代码。谢谢,抱歉,但我需要问你最后一件事:我的文件(csv)是由超过788行组成的,解析它将需要相当长的时间,而且我需要定期更新数据库(每30分钟到1小时一次)。这真的适合我的情况吗?好吧,试试看,但788线算不了什么。它应该能够立即解析它。
StringTokenizer lines = new StringTokenizer(csv,"\n\r");
lines.nextToken();
while (lines.hasMoreElements()) {
String line = lines.nextToken();
Enumeration e = new CSVEnumeration(line);
for (int i=0;e.hasMoreElements();i++) {
String token = (String)e.nextElement();
switch (i) {
case 0:/* do stuff */;break;
}
}
}