您的位置:首页 > 数据库

解析增量xml数据到数据库

2016-03-23 12:24 197 查看
读取增量xml数据到数据库

作者:Vashon

时间:20160323

昨天接到领导安排的任务:将系统产生的增量xml数据插入到另一个项目中的数据库中(数据库表结构一样)。

网上查找了许多例子,都是没有考虑到数据类型或其他的细节,如果改变数据库表则再需要修改程序,这显得很麻烦。以下是本人花了不少时间,利用工厂及代理模式设计出来的一个工具,用户可以使用过程修改配置文件即可。

功能描述:

1、定时读取指定路径的下的文件到数据库,并在插入前做数据的唯一性处理。

2、自动匹配对应数据库表结构的增量xml数据文件。

3、将读取完成的xml文件移动到bak目录。

4、控制日志输出级别。

增量xml例子

增量xml数据格式(该xml样例只包含两条目标插入数据,实际文件中是包含很多条的。)如下:

<?xml version="1.0" encoding="utf-8"?>
<project>
<corporation_info>
<corp_info_id>20100816215830297313</corp_info_id>
<organ_code>765955335</organ_code>
<entity_id>270000032004080500176</entity_id>
<corp_name>上海煌虹建筑装饰设计工程有限公司</corp_name>
<corp_type>00010100</corp_type>
<person_name>黄XXXX</person_name>
<address>上海市松江区泖港镇中南路7号B区186号</address>
<area_code>松江</area_code>
<zip>201607</zip>
<telephone>62418078</telephone>
<establish_date>2004-08-05T00:00:00</establish_date>
<reg_capital>600</reg_capital>
<currency>人民币</currency>
<business_scope>建筑装饰装修工程与设计</business_scope>
<person_cert_type></person_cert_type>
<person_cert_code></person_cert_code>
<industry_code>E5010</industry_code>
<organizers></organizers>
<funding_src></funding_src>
<reg_no>310227001057592</reg_no>
<receiving_organ>270000</receiving_organ>
<repeal_reason></repeal_reason>
<repeal_date></repeal_date>
<change_date>2016-03-16T13:33:00</change_date>
<change_item></change_item>
<repeal_organ></repeal_organ>
<branch_num></branch_num>
<represent_num></represent_num>
<reg_upd_date></reg_upd_date>
<taxpayers_code>310227765955335</taxpayers_code>
<tax_code>13102275103</tax_code>
<tax_reg_date>2004-08-13</tax_reg_date>
<tax_chge_content>纳税人名称,财务负责人姓名XXXXX</tax_chge_content>
<tax_chge_date>2015-01-22</tax_chge_date>
<tax_repeal_reason></tax_repeal_reason>
<tax_repeal_date></tax_repeal_date>
<tax_repeal_organ ></tax_repeal_organ >
<business_address>上海市长宁区玉屏南路520弄15号</business_address>
<tax_upd_date></tax_upd_date>
<organcode_date></organcode_date>
<orgcode_chgdate>2010-03-12</orgcode_chgdate>
<orgcode_repealdate></orgcode_repealdate>
<qs_upd_date></qs_upd_date>
<uni_sc_id>913101177659553356</uni_sc_id>
</corporation_info>

<corporation_info>
<corp_info_id>20100816215830455984</corp_info_id>
<organ_code>557439256</organ_code>
<entity_id>270000032010062100052</entity_id>
<corp_name>上海翔晟包装材料有限公司</corp_name>
<corp_type>00010100</corp_type>
<person_name>张XX</person_name>
<address>上海市松江区泖港镇松金公路8238号2幢</address>
<area_code>松江</area_code>
<zip>201607</zip>
<telephone>15000428729</telephone>
<establish_date>2010-06-21T00:00:00</establish_date>
<reg_capital>100</reg_capital>
<currency>人民币</currency>
<business_scope>包装材料、泡沫制品批发零售;塑料制品加工及销售</business_scope>
<person_cert_type></person_cert_type>
<person_cert_code></person_cert_code>
<industry_code>F5141</industry_code>
<organizers></organizers>
<funding_src></funding_src>
<reg_no>310227001548657</reg_no>
<receiving_organ>270000</receiving_organ>
<repeal_reason></repeal_reason>
<repeal_date></repeal_date>
<change_date>2016-03-16T13:30:00</change_date>
<change_item></change_item>
<repeal_organ></repeal_organ>
<branch_num></branch_num>
<represent_num></represent_num>
<reg_upd_date></reg_upd_date>
<taxpayers_code>310227557439256</taxpayers_code>
<tax_code>13102275100</tax_code>
<tax_reg_date></tax_reg_date>
<tax_chge_content>注册地址,生产经营地址,经营范围</tax_chge_content>
<tax_chge_date>2014-03-24</tax_chge_date>
<tax_repeal_reason></tax_repeal_reason>
<tax_repeal_date></tax_repeal_date>
<tax_repeal_organ ></tax_repeal_organ >
<business_address>上海市松江区泖港镇松金公路7836号</business_address>
<tax_upd_date></tax_upd_date>
<organcode_date>2010-06-22</organcode_date>
<orgcode_chgdate></orgcode_chgdate>
<orgcode_repealdate></orgcode_repealdate>
<qs_upd_date></qs_upd_date>
<uni_sc_id>91310117557439256R</uni_sc_id>
</corporation_info>
</project>


增量xml分析

以上作为xml文件的例子,在根节点<project>下面有多个子节点<corporation_info>,该子节点是数据库表名称。<corporation_info>下面的子节点是表的字段和对应的字段内容。

现在需要将这些增量数据插入到另一系统对应的数据库中(数据库表结构一样)。

分析:先获取数据库表结构,遍历表中的字段名称及字段类型,根据条件分别对他们进行处理以及根据属性名称在xml文件中检索。

实现代码

经过分析实现以及代码优化,最终形成一个工具类,代码如下:

DBC连接池

public class ConnectionPool {

private Vector<Connection>		pool;

private String					url;

private String					username;

private String					password;

private String					driverClassName;

/**
* 连接池的大小,也就是连接池中有多少个数据库连接。
*/
private int						poolSize	= 1;

private static ConnectionPool	instance	= null;

/**
* 读取设置连接池的属性文件
*/
private void readConfig() {
try {
this.driverClassName = PropertyUtils.getProperty("jdbc.driverClassName");
this.url = PropertyUtils.getProperty("jdbc.url");
this.username = PropertyUtils.getProperty("jdbc.user");
this.password = PropertyUtils.getProperty("jdbc.password");
this.poolSize = 50;
} catch (Exception e) {
e.printStackTrace();
System.err.println("读取属性文件出错.");
}
}

private ConnectionPool() {
init();
}

private void init() {
pool = new Vector<Connection>(poolSize);
readConfig();
addConnection();
}

public synchronized void release(Connection conn) {
pool.add(conn);

}

public synchronized void closePool() {
for (int i = 0; i < pool.size(); i++) {
try {
((Connection) pool.get(i)).close();
} catch (SQLException e) {
e.printStackTrace();
}
pool.remove(i);
}
}

public static ConnectionPool getInstance() {
if (instance == null) {
instance = new ConnectionPool();
}
return instance;
}

public synchronized Connection getConnection() {
if (pool.size() > 0) {
Connection conn = pool.get(0);
pool.remove(conn);
return conn;
} else {
return null;
}
}

private void addConnection() {
Connection conn = null;
for (int i = 0; i < poolSize; i++) {

try {
Class.forName(driverClassName);
conn = java.sql.DriverManager.getConnection(url, username, password);
pool.add(conn);

} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}

}
}

}


operator

工厂类:

public class Factory {
public static IReadXml getIOperateInstance(){
return new ReadXmlProxy();
}
}


接口类:

public interface IReadXml{

/**获取xml根节点**/
public Element getXmlRoot();

/**获取xml根节点**/
public Element getXmlRoot(File file);

/**循环读取xml数据到数据库**/
public void readXml(Element root);

/**遍历并读取指定目录下的xml文件**/
public void readXmlsByPath(String path);

}


代理类:

public class ReadXmlProxy implements IReadXml {

private ConnectionPool	dbc		= null;
private IReadXml		readxml	= null;

public ReadXmlProxy() {
this.dbc = ConnectionPool.getInstance();// 数据库连接操作
this.readxml = new ReadXmlImpl(this.dbc.getConnection());
}

public Element getXmlRoot() {
return this.readxml.getXmlRoot();
}

public void readXml(Element root) {
try {
this.readxml.readXml(root);
} catch (Exception e) {
e.printStackTrace();
} finally {
this.dbc.closePool();
}
}

@Override
public void readXmlsByPath(String path) {
this.readxml.readXmlsByPath(path);
}

@Override
public Element getXmlRoot(File file) {
return this.readxml.getXmlRoot(file);
}

}


实现类:

public class ReadXmlImpl implements IReadXml{
private Logger logger = Logger.getLogger(ReadXmlImpl.class);

private Connection conn=null;

/**类型为NUBMBER或DATE**/
public static final String IS_NUMBER_OR_DATE = "1";
/**是否开启写入数据库操作标记(1:开启,0:关闭)**/
public static final String POWER_ON = "1";

/**打印插入数据日志级别**/
public static final String LOG_LEVEL = PropertyUtils.getProperty("log.level");
/**日志信息一级输出**/
public static final String LOG_DEBUG = "debug";
/**日志信息二级输出**/
public static final String LOG_INFO = "info";
/**日志信息三级输出**/
public static final String LOG_WARN = "warn";
/**日志级别控制,默认为不输出.**/
private int logLevel = 0;
/**记录数据插入量**/
int count = 0;

public ReadXmlImpl(Connection conn) {
this.conn=conn;

if(LOG_DEBUG.equals(LOG_LEVEL)){
logLevel = 3;
}
if(LOG_INFO.equals(LOG_LEVEL)){
logLevel = 2;
}
if(LOG_WARN.equals(LOG_LEVEL)){
logLevel = 1;
}
}

/**
* 获取xml根节点.
*/
public Element getXmlRoot() {
Element root = null;
try {
SAXReader sax=new SAXReader();//创建一个SAXReader对象
File xmlFile=new File(PropertyUtils.getProperty("filePath"));//根据指定的路径创建file对象
sax.setEncoding("gbk");
Document document;
document = sax.read(xmlFile);
root=document.getRootElement();//获取根节点
} catch (DocumentException e) {
e.printStackTrace();
}
return root;
}

/**
* 根据指定文件获取xml根节点.
* @param file
* @return
*/
public Element getXmlRoot(File xmlFile){
Element root = null;
try{
SAXReader sax=new SAXReader();//创建一个SAXReader对象
sax.setEncoding("gbk");
Document document;
document = sax.read(xmlFile);
root=document.getRootElement();//获取根节点
}catch(Exception e){
e.printStackTrace();
}
return root;
}

/**
* 读取xml文件.
*/
public void readXml(Element root) {
PreparedStatement pstmt=null;
try{
//现在应该根据根节点找到全部的子节点
Iterator<?> iter = root.elementIterator();

while(iter.hasNext()){
Element item = (Element) iter.next();//取得每一条数据
/**主键是否重复**/
boolean isPkSerpico = false;
//=========获取数据库表字段名=========
String sql = "select * from "+PropertyUtils.getProperty("destTable");
//拼装SQL
StringBuffer insertSql = new StringBuffer("insert into "+PropertyUtils.getProperty("destTable")+"(");

pstmt = this.conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery(sql);
ResultSetMetaData data = rs.getMetaData();

//当前ID值
String currentId = "";
//数据库表主键
String pkName = null;
//1通过连接获取表的主键
DatabaseMetaData dbMeta = this.conn.getMetaData();
ResultSet pkRSet = dbMeta.getPrimaryKeys(null, null, PropertyUtils.getProperty("destTable").toUpperCase());
while(pkRSet.next()){
pkName = (String) pkRSet.getObject(4);
}
//2如果数据库表没有设置主键则取得第一列
if(pkName == null){
pkName = data.getColumnName(1);
}
//主键的值
List<String> idValues = getIdValue(pkName, PropertyUtils.getProperty("destTable").toUpperCase());
//*************************

for(int i=1;i<=data.getColumnCount();i++){
//获得指定列的列名
String columnName = data.getColumnName(i);
insertSql.append(columnName).append(",");
}

insertSql.deleteCharAt(insertSql.length()-1).append(") values(");

//循环判断字段类型并给值
for(int i=1; i<=data.getColumnCount(); i++){
String value = null;//接受字符串或日期格式
String isNumber = "";//是否是NUMBER或DATE类型(0:不是,1:是)
//获得指定列的列名
String columnName = data.getColumnName(i);
//获得指定列的数据类型名
String columnTypeName = data.getColumnTypeName(i);
if("VARCHAR2".equals(columnTypeName)){
if("".equals(item.elementText(columnName.toLowerCase())) || "null".equals(item.elementText(columnName.toLowerCase()))
||item.elementText(columnName.toLowerCase())==null){
value = "NULL";
}else{
value = item.elementText(columnName.toLowerCase());
}
if(logLevel >=3){
logger.info("共【"+data.getColumnCount()+"】列;给第【"+i+"】列,类型为:【"+columnTypeName+"】的:【"+columnName+"】赋值内容为:【"+value+"】");
}
}
if("DATE".equals(columnTypeName)){
//如果从xml中取出的时间值为null时,拼接的sql不需要"'".
isNumber = IS_NUMBER_OR_DATE;
if("".equals(item.elementText(columnName.toLowerCase())) || "null".equals(item.elementText(columnName.toLowerCase()))
|| item.elementText(columnName.toLowerCase())==null){
value = "to_date(NULL, 'yyyy-MM-dd HH:mi:ss')";
}else{
value = "to_date("+"'"+item.elementText(columnName.toLowerCase()).replace("T", " ")+"'"+", 'yyyy-mm-dd HH24:mi:ss')";
}
if(logLevel >=3){
logger.info("共【"+data.getColumnCount()+"】列;给第【"+i+"】列,类型为:【"+columnTypeName+"】的:【"+columnName+"】赋值内容为:【"+value+"】");
}
}
if("NUMBER".equals(columnTypeName)){
isNumber = IS_NUMBER_OR_DATE;
if("".equals(item.elementText(columnName.toLowerCase())) || "null".equals(item.elementText(columnName.toLowerCase()))
|| item.elementText(columnName.toLowerCase())==null){
value="NULL";
}else{
value = item.elementText(columnName.toLowerCase());
}
if(logLevel >=3){
logger.info("共【"+data.getColumnCount()+"】列;给第【"+i+"】列,类型为:【"+columnTypeName+"】的:【"+columnName+"】赋值内容为:【"+value+"】");
}
}

if(IS_NUMBER_OR_DATE.equals(isNumber)){
insertSql.append(value).append(",");
}else{
insertSql.append("'"+value+"'").append(",");
}

}

insertSql.deleteCharAt(insertSql.length()-1).append(")");
if(logLevel >=2){
logger.info("执行的SQL语句为:"+insertSql);
}

//如果有主键重复,则update(删除老的数据,再增加新的数据)
for(String id : idValues){
if(!"".equals(item.elementText(pkName.toLowerCase())) && item.elementText(pkName.toLowerCase()).equals(id)){
isPkSerpico = true;//已存在重复的ID
currentId = id;
}
}

//如果ID重复
if(isPkSerpico){
//如果删除老数据成功
if(POWER_ON.equals(PropertyUtils.getProperty("power"))){
if(removeById(pkName, currentId, PropertyUtils.getProperty("destTable").toUpperCase())){
insertData(this.conn, insertSql.toString());
}else{
if(logLevel >=1){
logger.info("*******************ID为【"+currentId+"】的数据删除失败!*******************");
}
}
}else{
if(logLevel >=1){
logger.info("****************您已关闭数据写入操作!****************");
}
}
}else{//ID不重复
if(POWER_ON.equals(PropertyUtils.getProperty("power"))){
insertData(this.conn, insertSql.toString());
}
}
}
}catch(Exception e){
e.printStackTrace();
}finally{
this.close(pstmt);
}
//		this.moveFile(PropertyUtils.getProperty("filePath"), PropertyUtils.getProperty("toPath")+"\\", PropertyUtils.getProperty("suffix"));
}

public boolean insertData(Connection conn, String sql) throws SQLException{
boolean flag = false;
PreparedStatement pstmt=null;
pstmt = this.conn.prepareStatement(sql);
if(pstmt.executeUpdate()>0){
++count;
flag=true;
if(logLevel >=1){
logger.info("****************成功插入【"+count+"】条数据!****************");
}
}else{
if(logLevel >=1){
logger.info("****************插如数据失败!****************");
}
}
return flag;
}

/**
* 根据主键名称和表名称获取该条数据的主键值.
* @param pkName 主键名称
* @param tableName 表名称
* @return 主键值
* @throws SQLException
*/
public List<String> getIdValue(String pkName, String tableName){
List<String> idList = new ArrayList<String>();
PreparedStatement pstmt=null;
String sql ="select "+pkName+" from "+tableName;
try {
pstmt = this.conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
while(rs.next()){
idList.add(rs.getString(1));
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
this.close(pstmt);
}
return idList;
}
/**
* 根据ID删除数据.
* @param pkName 主键名称
* @param pkValue 主键值
* @param tableName 表名称
* @return
* @throws SQLException
*/
public boolean removeById(String pkName, String pkValue, String tableName) {
PreparedStatement pstmt=null;
boolean flag = false;
String sql = "delete from "+ tableName +" where "+pkName+"=?";
if(logLevel >=1){
logger.info("删除的语句:"+sql+";"+pkName+"="+pkValue);
}
try {
pstmt = this.conn.prepareStatement(sql);
pstmt.setString(1, pkValue);
if (pstmt.executeUpdate() > 0) {
flag = true;
if(logLevel >=1){
logger.info("********************成功删除ID为:【"+pkValue+"】的数据********************");
}
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
this.close(pstmt);
}
return flag;
}

public void close(PreparedStatement pstmt){
if(pstmt != null){
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

public void close(PreparedStatement pstmt, Connection conn){
if(pstmt != null){
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

@Override
public void readXmlsByPath(String path) {
File file = new File(path);
if(Strings.isEmpty(path) || !file.exists()){
if(logLevel >=1){
logger.info("******************文件路径不存在!******************");
}
return;
}
//如果是目录
if(file.isDirectory()){
File fs[] = file.listFiles();
for(File f : fs){
if(f.isDirectory()){
readXmlsByPath(f.toString());
}else{
this.readXml(this.getXmlRoot(f));
this.moveFile(PropertyUtils.getProperty("filePath"), PropertyUtils.getProperty("toPath"), f, PropertyUtils.getProperty("suffix"));
}
}
}else{//如果不是目录
this.readXml(getXmlRoot(file));
this.moveFile(PropertyUtils.getProperty("filePath"), PropertyUtils.getProperty("toPath"), file, PropertyUtils.getProperty("suffix"));
}
}
/**
* 移动文件.
* @param fromPath 源路径
* @param toPath 部门路径
* @param file 要移动的文件
* @param suffix 移动后的文件后缀
*/
public boolean moveFile(String fromPath, String toPath, File file, String suffix){
boolean flag = false;
if(Strings.isEmpty(fromPath) || Strings.isEmpty(toPath) || Strings.isEmpty(suffix)){
if(Strings.isEmpty(fromPath)){
if(logLevel >=1){
logger.info("******************移动文件的源路径不能为空!******************");
}
}
if(Strings.isEmpty(toPath)){
if(logLevel >=1){
logger.info("******************移动文件的目标径不能为空!******************");
}
}
if(Strings.isEmpty(suffix)){
if(logLevel >=1){
logger.info("******************请指定移动文件后的文件名后缀!******************");
}
}
return false;
}

if(!Strings.isEmpty(fromPath) && !Strings.isEmpty(toPath) && !Strings.isEmpty(suffix)){
File fromFile = new File(fromPath+File.separator+file.getName());

File destPath = new File(toPath);
if(!destPath.exists()){
destPath.mkdirs();
}

if(fromFile.renameTo(new File(destPath+File.separator, file.getName() + "." + suffix))){
if(logLevel >=1){
logger.info("******************文件从【"+fromPath+"】移动到【"+toPath+"】成功!******************");
flag = true;
}
}else{
if(logLevel >=1){
logger.info("******************文件从【"+fromPath+"】移动到【"+toPath+"】失败!******************");
}
}
}
return flag;
}
}


操作类:

public class Operator {
public static void main(String args[]){
Operator.execute();
}
/**
* 执行读取增量xml数据到数据库.
*/
public static void execute(){
//		Element root = Factory.getIOperateInstance().getXmlRoot();
//		Factory.getIOperateInstance().readXml(root);

String path = PropertyUtils.getProperty("filePath");
Factory.getIOperateInstance().readXmlsByPath(path);
}

}


配置文件:

#************************读取增量Xml数据到数据库信息配置开始************************
#jdbc链接参数
jdbc.driverClassName oracle.jdbc.driver.OracleDriver
#jdbc.url jdbc:oracle:thin:@10.xxx.xxx.xxxxx:1521:ORCL
#jdbc.userName xxxxxx
#jdbc.password xxxxxx

#------------主要修改以下两个配置--------------
#解析xml文件路径源路径
filePath e:\\import\\test\\test11
#移动文件到目标路径
toPath e:\\import\\test\\test44
#移动文件后的后缀名
suffix bak

#解析xml之后移入的bak目录
bakPath

#---------------------------------------

#执行从xml写入到数据库的操作开关(1:开启,0:关闭)
power 1

#打印插入数据日志信息(debug:指定日志信息的最低输出级别;info:日志二级输出;warn:日志三级输出.)
log.level warn

#定时器配置时间
readXmlTime 0 5 10 * * ?
#************************读取增量Xml数据到数据库信息配置结束************************


运行结果

根据需求修改表名称和xml文件路径名称两个常量,运行程序:

控制台打印结果:

共【68】列;给第【1】列,类型为:【VARCHAR2】的:【CORP_INFO_ID】赋值内容为:【20100816215830297313】
共【68】列;给第【2】列,类型为:【VARCHAR2】的:【ORGAN_CODE】赋值内容为:【765955335】
共【68】列;给第【3】列,类型为:【VARCHAR2】的:【ENTITY_ID】赋值内容为:【270000032004080500176】
共【68】列;给第【4】列,类型为:【VARCHAR2】的:【CORP_NAME】赋值内容为:【上海煌虹建筑装饰设计工程有限公司】
共【68】列;给第【5】列,类型为:【VARCHAR2】的:【CORP_TYPE】赋值内容为:【00010100】
共【68】列;给第【6】列,类型为:【VARCHAR2】的:【PERSON_NAME】赋值内容为:【黄从高】
共【68】列;给第【7】列,类型为:【VARCHAR2】的:【ADDRESS】赋值内容为:【上海市松江区泖港镇中南路7号B区186号】
共【68】列;给第【8】列,类型为:【VARCHAR2】的:【AREA_CODE】赋值内容为:【松江】
共【68】列;给第【9】列,类型为:【VARCHAR2】的:【ZIP】赋值内容为:【201607】
共【68】列;给第【10】列,类型为:【VARCHAR2】的:【TELEPHONE】赋值内容为:【62418078】
共【68】列;给第【11】列,类型为:【DATE】的:【ESTABLISH_DATE】赋值内容为:【to_date('2004-08-05 00:00:00', 'yyyy-mm-dd HH24:mi:ss')】
共【68】列;给第【12】列,类型为:【NUMBER】的:【REG_CAPITAL3】赋值内容为:【NULL】
共【68】列;给第【13】列,类型为:【VARCHAR2】的:【CURRENCY】赋值内容为:【人民币】
共【68】列;给第【14】列,类型为:【VARCHAR2】的:【BUSINESS_SCOPE】赋值内容为:【建筑装饰装修工程与设计】
共【68】列;给第【15】列,类型为:【VARCHAR2】的:【PERSON_CERT_TYPE】赋值内容为:【NULL】
共【68】列;给第【16】列,类型为:【VARCHAR2】的:【PERSON_CERT_CODE】赋值内容为:【NULL】
共【68】列;给第【17】列,类型为:【VARCHAR2】的:【INDUSTRY_CODE】赋值内容为:【E5010】
共【68】列;给第【18】列,类型为:【VARCHAR2】的:【ORGANIZERS】赋值内容为:【NULL】
共【68】列;给第【19】列,类型为:【VARCHAR2】的:【FUNDING_SRC】赋值内容为:【NULL】
共【68】列;给第【20】列,类型为:【VARCHAR2】的:【REG_NO】赋值内容为:【310227001057592】
共【68】列;给第【21】列,类型为:【VARCHAR2】的:【RECEIVING_ORGAN】赋值内容为:【270000】
共【68】列;给第【22】列,类型为:【VARCHAR2】的:【REPEAL_REASON】赋值内容为:【NULL】
共【68】列;给第【23】列,类型为:【DATE】的:【REPEAL_DATE】赋值内容为:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;给第【24】列,类型为:【DATE】的:【CHANGE_DATE】赋值内容为:【to_date('2016-03-16 13:33:00', 'yyyy-mm-dd HH24:mi:ss')】
共【68】列;给第【25】列,类型为:【VARCHAR2】的:【CHANGE_ITEM】赋值内容为:【NULL】
共【68】列;给第【26】列,类型为:【VARCHAR2】的:【REPEAL_ORGAN】赋值内容为:【NULL】
共【68】列;给第【27】列,类型为:【NUMBER】的:【BRANCH_NUM】赋值内容为:【NULL】
共【68】列;给第【28】列,类型为:【NUMBER】的:【REPRESENT_NUM】赋值内容为:【NULL】
共【68】列;给第【29】列,类型为:【DATE】的:【REG_UPD_DATE】赋值内容为:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;给第【30】列,类型为:【VARCHAR2】的:【TAXPAYERS_CODE】赋值内容为:【310227765955335】
共【68】列;给第【31】列,类型为:【VARCHAR2】的:【TAX_CODE】赋值内容为:【13102275100】
共【68】列;给第【32】列,类型为:【DATE】的:【TAX_REG_DATE】赋值内容为:【to_date('2004-08-13', 'yyyy-mm-dd HH24:mi:ss')】
共【68】列;给第【33】列,类型为:【VARCHAR2】的:【TAX_CHGE_CONTENT】赋值内容为:【纳税人名称,财务负责人姓名XXXXX】
共【68】列;给第【34】列,类型为:【DATE】的:【TAX_CHGE_DATE】赋值内容为:【to_date('2015-01-22', 'yyyy-mm-dd HH24:mi:ss')】
共【68】列;给第【35】列,类型为:【VARCHAR2】的:【TAX_REPEAL_REASON】赋值内容为:【NULL】
共【68】列;给第【36】列,类型为:【DATE】的:【TAX_REPEAL_DATE】赋值内容为:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;给第【37】列,类型为:【VARCHAR2】的:【TAX_REPEAL_ORGAN】赋值内容为:【NULL】
共【68】列;给第【38】列,类型为:【VARCHAR2】的:【BUSINESS_ADDRESS】赋值内容为:【上海市长宁区玉屏南路520弄15号】
共【68】列;给第【39】列,类型为:【DATE】的:【TAX_UPD_DATE】赋值内容为:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;给第【40】列,类型为:【DATE】的:【ORGANCODE_DATE】赋值内容为:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;给第【41】列,类型为:【DATE】的:【ORGCODE_CHGDATE】赋值内容为:【to_date('2010-03-12', 'yyyy-mm-dd HH24:mi:ss')】
共【68】列;给第【42】列,类型为:【DATE】的:【ORGCODE_REPEALDATE】赋值内容为:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;给第【43】列,类型为:【DATE】的:【QS_UPD_DATE】赋值内容为:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;给第【44】列,类型为:【VARCHAR2】的:【BD_RESULT】赋值内容为:【NULL】
共【68】列;给第【45】列,类型为:【VARCHAR2】的:【QYK_ID】赋值内容为:【NULL】
共【68】列;给第【46】列,类型为:【DATE】的:【UPD_TIME】赋值内容为:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;给第【47】列,类型为:【VARCHAR2】的:【TRIM_CORP_NAME】赋值内容为:【NULL】
共【68】列;给第【48】列,类型为:【VARCHAR2】的:【FUNDS_CODE】赋值内容为:【NULL】
共【68】列;给第【49】列,类型为:【DATE】的:【FUNDS_OPEN_DATE】赋值内容为:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;给第【50】列,类型为:【DATE】的:【FUNDS_REPEAL_DATE】赋值内容为:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;给第【51】列,类型为:【DATE】的:【FUNDS_UPD_DATE】赋值内容为:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;给第【52】列,类型为:【VARCHAR2】的:【FUNDSADD_CODE】赋值内容为:【NULL】
共【68】列;给第【53】列,类型为:【DATE】的:【FUNDSADD_OPEN_DATE】赋值内容为:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;给第【54】列,类型为:【DATE】的:【FUNDSADD_REPEAL_DATE】赋值内容为:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;给第【55】列,类型为:【DATE】的:【FUNDSADD_UPD_DATE】赋值内容为:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;给第【56】列,类型为:【VARCHAR2】的:【SOCIAL_SECURITY_CODE】赋值内容为:【NULL】
共【68】列;给第【57】列,类型为:【DATE】的:【SOCIAL_SECURITY_OPEN_DATE】赋值内容为:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;给第【58】列,类型为:【DATE】的:【SOCIAL_SECURITY_REPEAL_DATE】赋值内容为:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;给第【59】列,类型为:【DATE】的:【SOCIAL_SECURITY_UPD_DATE】赋值内容为:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;给第【60】列,类型为:【VARCHAR2】的:【LK_STATUS】赋值内容为:【NULL】
共【68】列;给第【61】列,类型为:【VARCHAR2】的:【IS_ZMQ】赋值内容为:【NULL】
共【68】列;给第【62】列,类型为:【DATE】的:【INSERT_TIME】赋值内容为:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;给第【63】列,类型为:【VARCHAR2】的:【CORP_STATUS】赋值内容为:【NULL】
共【68】列;给第【64】列,类型为:【VARCHAR2】的:【IS_GSL】赋值内容为:【NULL】
共【68】列;给第【65】列,类型为:【VARCHAR2】的:【IS_RECENTLY_ZMQ】赋值内容为:【NULL】
共【68】列;给第【66】列,类型为:【VARCHAR2】的:【IS_WEB_SEND】赋值内容为:【NULL】
共【68】列;给第【67】列,类型为:【VARCHAR2】的:【UNI_SC_ID】赋值内容为:【913101177659553356】
共【68】列;给第【68】列,类型为:【NUMBER】的:【REG_CAPITAL】赋值内容为:【600】
执行的SQL语句为:insert into CORP_INFO_TEST(CORP_INFO_ID,ORGAN_CODE,ENTITY_ID,CORP_NAME,CORP_TYPE,PERSON_NAME,ADDRESS,AREA_CODE,ZIP,TELEPHONE,ESTABLISH_DATE,REG_CAPITAL3,CURRENCY,BUSINESS_SCOPE,PERSON_CERT_TYPE,PERSON_CERT_CODE,INDUSTRY_CODE,ORGANIZERS,FUNDING_SRC,REG_NO,RECEIVING_ORGAN,REPEAL_REASON,REPEAL_DATE,CHANGE_DATE,CHANGE_ITEM,REPEAL_ORGAN,BRANCH_NUM,REPRESENT_NUM,REG_UPD_DATE,TAXPAYERS_CODE,TAX_CODE,TAX_REG_DATE,TAX_CHGE_CONTENT,TAX_CHGE_DATE,TAX_REPEAL_REASON,TAX_REPEAL_DATE,TAX_REPEAL_ORGAN,BUSINESS_ADDRESS,TAX_UPD_DATE,ORGANCODE_DATE,ORGCODE_CHGDATE,ORGCODE_REPEALDATE,QS_UPD_DATE,BD_RESULT,QYK_ID,UPD_TIME,TRIM_CORP_NAME,FUNDS_CODE,FUNDS_OPEN_DATE,FUNDS_REPEAL_DATE,FUNDS_UPD_DATE,FUNDSADD_CODE,FUNDSADD_OPEN_DATE,FUNDSADD_REPEAL_DATE,FUNDSADD_UPD_DATE,SOCIAL_SECURITY_CODE,SOCIAL_SECURITY_OPEN_DATE,SOCIAL_SECURITY_REPEAL_DATE,SOCIAL_SECURITY_UPD_DATE,LK_STATUS,IS_ZMQ,INSERT_TIME,CORP_STATUS,IS_GSL,IS_RECENTLY_ZMQ,IS_WEB_SEND,UNI_SC_ID,REG_CAPITAL) values('20100816215830297313','765955335','270000032004080500176','上海煌虹建筑装饰设计工程有限公司','00010100','黄从高','上海市松江区泖港镇中南路7号B区186号','松江','201607','62418078',to_date('2004-08-05 00:00:00', 'yyyy-mm-dd HH24:mi:ss'),NULL,'人民币','建筑装饰装修工程与设计','NULL','NULL','E5010','NULL','NULL','310227001057592','270000','NULL',to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date('2016-03-16 13:33:00', 'yyyy-mm-dd HH24:mi:ss'),'NULL','NULL',NULL,NULL,to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),'310227765955335','13102275100',to_date('2004-08-13', 'yyyy-mm-dd HH24:mi:ss'),'纳税人名称,财务负责人姓名XXXXX',to_date('2015-01-22', 'yyyy-mm-dd HH24:mi:ss'),'NULL',to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),'NULL','上海市长宁区玉屏南路520弄15号',to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date('2010-03-12', 'yyyy-mm-dd HH24:mi:ss'),to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),'NULL','NULL',to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),'NULL','NULL',to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),'NULL',to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),'NULL',to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),'NULL','NULL',to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),'NULL','NULL','NULL','NULL','913101177659553356',600)
共【68】列;给第【1】列,类型为:【VARCHAR2】的:【CORP_INFO_ID】赋值内容为:【20100816215830455984】
共【68】列;给第【2】列,类型为:【VARCHAR2】的:【ORGAN_CODE】赋值内容为:【557439256】
共【68】列;给第【3】列,类型为:【VARCHAR2】的:【ENTITY_ID】赋值内容为:【270000032010062100052】
共【68】列;给第【4】列,类型为:【VARCHAR2】的:【CORP_NAME】赋值内容为:【上海翔晟包装材料有限公司】
共【68】列;给第【5】列,类型为:【VARCHAR2】的:【CORP_TYPE】赋值内容为:【00010100】
共【68】列;给第【6】列,类型为:【VARCHAR2】的:【PERSON_NAME】赋值内容为:【张瑞勤】
共【68】列;给第【7】列,类型为:【VARCHAR2】的:【ADDRESS】赋值内容为:【上海市松江区泖港镇松金公路8238号2幢】
共【68】列;给第【8】列,类型为:【VARCHAR2】的:【AREA_CODE】赋值内容为:【松江】
共【68】列;给第【9】列,类型为:【VARCHAR2】的:【ZIP】赋值内容为:【201607】
共【68】列;给第【10】列,类型为:【VARCHAR2】的:【TELEPHONE】赋值内容为:【15000428739】
共【68】列;给第【11】列,类型为:【DATE】的:【ESTABLISH_DATE】赋值内容为:【to_date('2010-06-21 00:00:00', 'yyyy-mm-dd HH24:mi:ss')】
共【68】列;给第【12】列,类型为:【NUMBER】的:【REG_CAPITAL3】赋值内容为:【NULL】
共【68】列;给第【13】列,类型为:【VARCHAR2】的:【CURRENCY】赋值内容为:【人民币】
共【68】列;给第【14】列,类型为:【VARCHAR2】的:【BUSINESS_SCOPE】赋值内容为:【包装材料、泡沫制品批发零售;塑料制品加工及销售】
共【68】列;给第【15】列,类型为:【VARCHAR2】的:【PERSON_CERT_TYPE】赋值内容为:【NULL】
共【68】列;给第【16】列,类型为:【VARCHAR2】的:【PERSON_CERT_CODE】赋值内容为:【NULL】
共【68】列;给第【17】列,类型为:【VARCHAR2】的:【INDUSTRY_CODE】赋值内容为:【F5141】
共【68】列;给第【18】列,类型为:【VARCHAR2】的:【ORGANIZERS】赋值内容为:【NULL】
共【68】列;给第【19】列,类型为:【VARCHAR2】的:【FUNDING_SRC】赋值内容为:【NULL】
共【68】列;给第【20】列,类型为:【VARCHAR2】的:【REG_NO】赋值内容为:【310227001548657】
共【68】列;给第【21】列,类型为:【VARCHAR2】的:【RECEIVING_ORGAN】赋值内容为:【270000】
共【68】列;给第【22】列,类型为:【VARCHAR2】的:【REPEAL_REASON】赋值内容为:【NULL】
共【68】列;给第【23】列,类型为:【DATE】的:【REPEAL_DATE】赋值内容为:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;给第【24】列,类型为:【DATE】的:【CHANGE_DATE】赋值内容为:【to_date('2016-03-16 13:30:00', 'yyyy-mm-dd HH24:mi:ss')】
共【68】列;给第【25】列,类型为:【VARCHAR2】的:【CHANGE_ITEM】赋值内容为:【NULL】
共【68】列;给第【26】列,类型为:【VARCHAR2】的:【REPEAL_ORGAN】赋值内容为:【NULL】
共【68】列;给第【27】列,类型为:【NUMBER】的:【BRANCH_NUM】赋值内容为:【NULL】
共【68】列;给第【28】列,类型为:【NUMBER】的:【REPRESENT_NUM】赋值内容为:【NULL】
共【68】列;给第【29】列,类型为:【DATE】的:【REG_UPD_DATE】赋值内容为:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;给第【30】列,类型为:【VARCHAR2】的:【TAXPAYERS_CODE】赋值内容为:【310227557439256】
共【68】列;给第【31】列,类型为:【VARCHAR2】的:【TAX_CODE】赋值内容为:【13102275100】
共【68】列;给第【32】列,类型为:【DATE】的:【TAX_REG_DATE】赋值内容为:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;给第【33】列,类型为:【VARCHAR2】的:【TAX_CHGE_CONTENT】赋值内容为:【注册地址,生产经营地址,经营范围】
共【68】列;给第【34】列,类型为:【DATE】的:【TAX_CHGE_DATE】赋值内容为:【to_date('2014-03-24', 'yyyy-mm-dd HH24:mi:ss')】
共【68】列;给第【35】列,类型为:【VARCHAR2】的:【TAX_REPEAL_REASON】赋值内容为:【NULL】
共【68】列;给第【36】列,类型为:【DATE】的:【TAX_REPEAL_DATE】赋值内容为:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;给第【37】列,类型为:【VARCHAR2】的:【TAX_REPEAL_ORGAN】赋值内容为:【NULL】
共【68】列;给第【38】列,类型为:【VARCHAR2】的:【BUSINESS_ADDRESS】赋值内容为:【上海市松江区泖港镇松金公路7836号】
共【68】列;给第【39】列,类型为:【DATE】的:【TAX_UPD_DATE】赋值内容为:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;给第【40】列,类型为:【DATE】的:【ORGANCODE_DATE】赋值内容为:【to_date('2010-06-22', 'yyyy-mm-dd HH24:mi:ss')】
共【68】列;给第【41】列,类型为:【DATE】的:【ORGCODE_CHGDATE】赋值内容为:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;给第【42】列,类型为:【DATE】的:【ORGCODE_REPEALDATE】赋值内容为:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;给第【43】列,类型为:【DATE】的:【QS_UPD_DATE】赋值内容为:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;给第【44】列,类型为:【VARCHAR2】的:【BD_RESULT】赋值内容为:【NULL】
共【68】列;给第【45】列,类型为:【VARCHAR2】的:【QYK_ID】赋值内容为:【NULL】
共【68】列;给第【46】列,类型为:【DATE】的:【UPD_TIME】赋值内容为:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;给第【47】列,类型为:【VARCHAR2】的:【TRIM_CORP_NAME】赋值内容为:【NULL】
共【68】列;给第【48】列,类型为:【VARCHAR2】的:【FUNDS_CODE】赋值内容为:【NULL】
共【68】列;给第【49】列,类型为:【DATE】的:【FUNDS_OPEN_DATE】赋值内容为:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;给第【50】列,类型为:【DATE】的:【FUNDS_REPEAL_DATE】赋值内容为:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;给第【51】列,类型为:【DATE】的:【FUNDS_UPD_DATE】赋值内容为:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;给第【52】列,类型为:【VARCHAR2】的:【FUNDSADD_CODE】赋值内容为:【NULL】
共【68】列;给第【53】列,类型为:【DATE】的:【FUNDSADD_OPEN_DATE】赋值内容为:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;给第【54】列,类型为:【DATE】的:【FUNDSADD_REPEAL_DATE】赋值内容为:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;给第【55】列,类型为:【DATE】的:【FUNDSADD_UPD_DATE】赋值内容为:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;给第【56】列,类型为:【VARCHAR2】的:【SOCIAL_SECURITY_CODE】赋值内容为:【NULL】
共【68】列;给第【57】列,类型为:【DATE】的:【SOCIAL_SECURITY_OPEN_DATE】赋值内容为:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;给第【58】列,类型为:【DATE】的:【SOCIAL_SECURITY_REPEAL_DATE】赋值内容为:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;给第【59】列,类型为:【DATE】的:【SOCIAL_SECURITY_UPD_DATE】赋值内容为:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;给第【60】列,类型为:【VARCHAR2】的:【LK_STATUS】赋值内容为:【NULL】
共【68】列;给第【61】列,类型为:【VARCHAR2】的:【IS_ZMQ】赋值内容为:【NULL】
共【68】列;给第【62】列,类型为:【DATE】的:【INSERT_TIME】赋值内容为:【to_date(NULL, 'yyyy-MM-dd HH:mi:ss')】
共【68】列;给第【63】列,类型为:【VARCHAR2】的:【CORP_STATUS】赋值内容为:【NULL】
共【68】列;给第【64】列,类型为:【VARCHAR2】的:【IS_GSL】赋值内容为:【NULL】
共【68】列;给第【65】列,类型为:【VARCHAR2】的:【IS_RECENTLY_ZMQ】赋值内容为:【NULL】
共【68】列;给第【66】列,类型为:【VARCHAR2】的:【IS_WEB_SEND】赋值内容为:【NULL】
共【68】列;给第【67】列,类型为:【VARCHAR2】的:【UNI_SC_ID】赋值内容为:【91310117557439256R】
共【68】列;给第【68】列,类型为:【NUMBER】的:【REG_CAPITAL】赋值内容为:【100】
执行的SQL语句为:insert into CORP_INFO_TEST(CORP_INFO_ID,ORGAN_CODE,ENTITY_ID,CORP_NAME,CORP_TYPE,PERSON_NAME,ADDRESS,AREA_CODE,ZIP,TELEPHONE,ESTABLISH_DATE,REG_CAPITAL3,CURRENCY,BUSINESS_SCOPE,PERSON_CERT_TYPE,PERSON_CERT_CODE,INDUSTRY_CODE,ORGANIZERS,FUNDING_SRC,REG_NO,RECEIVING_ORGAN,REPEAL_REASON,REPEAL_DATE,CHANGE_DATE,CHANGE_ITEM,REPEAL_ORGAN,BRANCH_NUM,REPRESENT_NUM,REG_UPD_DATE,TAXPAYERS_CODE,TAX_CODE,TAX_REG_DATE,TAX_CHGE_CONTENT,TAX_CHGE_DATE,TAX_REPEAL_REASON,TAX_REPEAL_DATE,TAX_REPEAL_ORGAN,BUSINESS_ADDRESS,TAX_UPD_DATE,ORGANCODE_DATE,ORGCODE_CHGDATE,ORGCODE_REPEALDATE,QS_UPD_DATE,BD_RESULT,QYK_ID,UPD_TIME,TRIM_CORP_NAME,FUNDS_CODE,FUNDS_OPEN_DATE,FUNDS_REPEAL_DATE,FUNDS_UPD_DATE,FUNDSADD_CODE,FUNDSADD_OPEN_DATE,FUNDSADD_REPEAL_DATE,FUNDSADD_UPD_DATE,SOCIAL_SECURITY_CODE,SOCIAL_SECURITY_OPEN_DATE,SOCIAL_SECURITY_REPEAL_DATE,SOCIAL_SECURITY_UPD_DATE,LK_STATUS,IS_ZMQ,INSERT_TIME,CORP_STATUS,IS_GSL,IS_RECENTLY_ZMQ,IS_WEB_SEND,UNI_SC_ID,REG_CAPITAL) values('20100816215830455984','557439256','270000032010062100052','上海翔晟包装材料有限公司','00010100','张瑞勤','上海市松江区泖港镇松金公路8238号2幢','松江','201607','15000428739',to_date('2010-06-21 00:00:00', 'yyyy-mm-dd HH24:mi:ss'),NULL,'人民币','包装材料、泡沫制品批发零售;塑料制品加工及销售','NULL','NULL','F5141','NULL','NULL','310227001548657','270000','NULL',to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date('2016-03-16 13:30:00', 'yyyy-mm-dd HH24:mi:ss'),'NULL','NULL',NULL,NULL,to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),'310227557439256','13102275100',to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),'注册地址,生产经营地址,经营范围',to_date('2014-03-24', 'yyyy-mm-dd HH24:mi:ss'),'NULL',to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),'NULL','上海市松江区泖港镇松金公路7836号',to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date('2010-06-22', 'yyyy-mm-dd HH24:mi:ss'),to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),'NULL','NULL',to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),'NULL','NULL',to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),'NULL',to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),'NULL',to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),'NULL','NULL',to_date(NULL, 'yyyy-MM-dd HH:mi:ss'),'NULL','NULL','NULL','NULL','91310117557439256R',100)


再来查看数据库是否插入成功:



两条数据已经成功插入到数据库中。

以上增量xml数据是包含有两个<corporation_info>节点的数据,如果xml中包含有多少个该节点,则数据库中就对应插入多少条数据。

进入实战操作:

需要导入的源数据:增量数据xml如下:



再看看数据库截图:



说明:此程序经过本人的不断优化,最终形成的一个实用工具。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: