📄 importtodb.java
字号:
package com.gemt.dataswap.util;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Iterator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import com.gemt.dataswap.io.FileHandle;
import com.gemt.dataswap.resources.ReadConfig;
public class ImportToDB
{
final static Log log = LogFactory.getLog(ImportToDB.class);
private ImportToDB(){
}
/**
* 把XML文件数据导入到数据库;
* 如果数据导入成功,则把XML文件移动到成功目录,
* 如果XML文件数据导入失败,则把XML文件移动到失败目录
*
*/
public static void ImportXMLData() {
if(log.isDebugEnabled()) {
log.debug("ImportXMLData begin() ");
log.debug("file" + File.pathSeparator + " " + File.separator + ": " + File.pathSeparatorChar + " " + File.separatorChar );
}
Calendar c = Calendar.getInstance();
//c.set(Calendar.HOUR_OF_DAY, 0);
//c.set(Calendar.MINUTE, 0);
//c.set(Calendar.SECOND, 0);
java.text.DateFormat dataFormat = new SimpleDateFormat(Constants.BACK_UP_FOLDER_SECONDARY_PATTERN);
String dateStr = dataFormat.format(c.getTime());
if(log.isDebugEnabled()) log.debug("dateStr = " + dateStr);
boolean createOkDirFlag = new File(ReadConfig.okfolder + File.separatorChar + dateStr).mkdirs();
boolean createFailDirFlag = new File(ReadConfig.failfolder + File.separatorChar + dateStr).mkdirs();
if(createOkDirFlag == false) {
if(log.isDebugEnabled()) {
log.debug("has not create ok folder for this time");
}
}
if(createFailDirFlag == false) {
if(log.isDebugEnabled()) {
log.debug("has not create fail folder for this time");
}
}
File okDir = new File(ReadConfig.okfolder + File.separatorChar + dateStr);
File failDir = new File(ReadConfig.failfolder + File.separatorChar + dateStr);
File[] fileArr = FileHandle.scanFolder();
//考虑到数据库的外键约束,先处理在system-config.xml中配置优先处理的XML文件
for(int i = 0; i < fileArr.length; i++) {
parseXMLData(failDir, fileArr[i]);
//当成功完成XML文件的导入数据库操作后, 把这个XML文件移动到导入成功的备份目录
FileHandle.moveFile(okDir, fileArr[i], fileArr[i].getName());
}
if(log.isDebugEnabled()) {
log.debug("ImportXMLData end() ");
}
}
public static void parseXMLData(File failDir, File dataFile) {
if(log.isDebugEnabled()) {
log.debug("parseXMLData begin() ");
}
SAXReader reader = new SAXReader();
Document doc = null;
try {
doc = reader.read(dataFile);
}
catch (DocumentException e) {
//e.printStackTrace();
if(log.isErrorEnabled()) {
log.error("DocumentException .......parseXMLData error : at file " + dataFile.getName() + " " + e);
}
}
if(doc == null) {
if(log.isErrorEnabled()) {
log.error("parseXMLData error : at file " + dataFile.getName());
}
FileHandle.moveFile(failDir, dataFile, dataFile.getName());
}
//开始处理XML文件
Element tableEle = (Element)doc.selectSingleNode(Constants.DATA_FILE_TABLE);
if(log.isDebugEnabled()) {
log.debug("tableEle name == " + tableEle.attributeValue(Constants.DATA_FILE_TABLE_NAME));
log.debug("tableEle security == " + tableEle.attributeValue(Constants.DATA_FILE_TABLE_SECURITY));
}
Collection columnEle = doc.selectNodes(Constants.DATA_FILE_TABLE_COLUMU);
Collection<String> columnList = new ArrayList<String>();
for(Iterator it = columnEle.iterator(); it.hasNext();) {
Element column = (Element)it.next();
if(log.isDebugEnabled()) {
log.debug("column value is " + column.getText());
}
columnList.add(column.getText());
}
String[] columnHeader = columnList.toArray(new String[0]);
Collection rowEle = doc.selectNodes(Constants.DATA_FILE_TABLE_ROW);
for(Iterator rowIt = rowEle.iterator(); rowIt.hasNext();) {
Element values = (Element)rowIt.next();
Collection valueList = values.selectNodes(Constants.DATA_FILE_TABLE_PATH_VALUE);
int i = 0;
for(Iterator valueIt = valueList.iterator(); valueIt.hasNext(); i++) {
Element value = (Element)valueIt.next();
if(log.isDebugEnabled()) {
log.debug("columnHeader["+i+"](" + columnHeader[i] + ") = " + value.getText());
}
//TODO, import data at here, by PengQS 20070616
}
}
if(log.isDebugEnabled()) {
log.debug("parseXMLData end() ");
}
}
/**
* @param args
*/
public static void main(String[] args) {
ImportXMLData();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -