你是不是打算象SQL里面批量插入的方法用一个INSERT语句一次性导入?那还是放弃吧。
不是说不能实现,而是这个办法实在没有多大用处,实在是屠龙之技。
举个例子吧
有A,B两个表(是不是同一个数据库并不重要),要求把A表的数据导入到B表中。
如果目标表(B表)中的各字段与源表(A表)相应字段的类型结构和要求都相同,那么一次性导入显然是个很好的办法,但如果真的这样的话,还用得着去导吗?
实际工作中,你碰到的情况往往是这样的
B表中经常有些约束条件,比如某个字段或键要求是唯一的,而A表却无此约束。
比如B表某个字段要求该字段不能为空,而A表允许
比如B表某个字段要求该字段必须符合一定的数据格式,而A表不满足。
比如B表某个字段的最大字长低于A表某个记录的实际字长。
比如B表有索引,而A表没有。
等等等等
如果碰到这些情况,显然是不可能成功导入的。
这是经常会碰到的。
唯一的办法,只能一条条地导入。
我也是后来才明白这个理的。
下面我们来看看如何一条条地导入的
方法不只一种,我是用ADO对象来实现的。
用两个CONNECTION对象分别建立到源数据库和目标数据库的连接
建立一个记录集,使用OPEN的方法从源表得到满足要求的数据记录
将记录指针移至首条
对记录的每一个字段进行检查,如果不满足目标表的约束条件,必须修改该字段,使之合法。
使用CONNECTION对象的EXECUTE方法将修正后的数据插入到目标表
同法处理下一条数据直至最后一条。