(有问题待修改)
系统导入比较大的CSV文件就会出错,所以计算利用Java程序直接导入,首先是用Java导出csv文件,代码如下:
java处理csv文件
package com.isprint.csvdeal;
import java.nio.charset.Charset;
import java.util.ArrayList;
import com.isprint.ssfimporter.db.CsvReader;
public class ExcelDealClass {
/**
* 读取CSV文件
*/
public static final String ENCODE = "GBK";
public static void main(String[] args) {
try {
ArrayList<String[]> csvList = new ArrayList<String[]>(); // 用来保存数据
String csvFilePath = "C:/testcsv/IDMCsvITRole.csv";
CsvReader reader = new CsvReader(csvFilePath, ',',
Charset.forName(ENCODE)); // 一般用这编码读就可以了
// reader.readHeaders(); // 跳过表头 如果需要表头的话,不要写这句。
while (reader.readRecord()) { // 逐行读入除表头的数据
csvList.add(reader.getValues());
}
reader.close();
// 获取第一行列信息
String[] csvStrHeader = csvList.get(0);
// 生成insert 记录
String tableName = "";
String insertStr = "INSERT INTO " + tableName + " (";
insertStr += dealValue(csvStrHeader) + ")";
// System.out.println(insertStr);
// 生成insert语句 values前面的语句
for (int row = 1; row < csvList.size(); row++) {
String[] csvStr = csvList.get(row);
String columnValue = " VALUES (";
columnValue += dealValue(csvStr) + ")";
System.out.println(insertStr + columnValue);
}
} catch (Exception ex) {
System.out.println(ex);
}
}
public static String dealValue(String[] valueStr) {
String value = "";
for (int i = 0; i < valueStr.length; i++) {
// 取得第row行第i列的数据
value += "'" + valueStr[i] + "',";
}
return value.substring(0, value.length() - 1);
}
}