数据库为SQL SERVER,有以下几个表:表1
DEST_ID NAME表2
DEST_ID ALNAME
表3
DEST_ID NAME FEE MEMO
将要导入的EXCEL表(格式固定)
NAME FEE问题是:NO.1导入:
if 表2.ALNAME=EXCEL导入表.NAME and 表2.DEST_ID=表1.DEST_ID
则表3.DEST_ID导入表1.DEST_ID,表3.NAME导入表1.NAME,表3.FEE导入EXCEL表里的FEE
NO.2对比:
如果表3里的FEE里边已经有数据,在导入时把EXCEL表里的FEE和表3里的FEE的对据进行对比后导入,如果数大了在MEMO中写变大,小了写减小。
DEST_ID NAME表2
DEST_ID ALNAME
表3
DEST_ID NAME FEE MEMO
将要导入的EXCEL表(格式固定)
NAME FEE问题是:NO.1导入:
if 表2.ALNAME=EXCEL导入表.NAME and 表2.DEST_ID=表1.DEST_ID
则表3.DEST_ID导入表1.DEST_ID,表3.NAME导入表1.NAME,表3.FEE导入EXCEL表里的FEE
NO.2对比:
如果表3里的FEE里边已经有数据,在导入时把EXCEL表里的FEE和表3里的FEE的对据进行对比后导入,如果数大了在MEMO中写变大,小了写减小。
不过你可以先用一个
Insert into #临时表
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')
将excel的导入到临时表,然后用sql操作
…………………………………………这里是判断是否存在还是只是关联
则表3.DEST_ID导入表1.DEST_ID,表3.NAME导入表1.NAME,表3.FEE导入EXCEL表里的FEE
^^^^^^^^^这里导入 是什么意思?插入?修改?
//是判断是否存在,如果存在就进行导入
则表3.DEST_ID导入表1.DEST_ID,表3.NAME导入表1.NAME,表3.FEE导入EXCEL表里的FEE
//实际上是update,比如我以前导入过一次了,FEE里边有值为0.8,这次再导入时如还是0.8直接UPDATE,如本次导入的数变了,成了0.7了,则是在字段MEMO里注明说减小了。还有什么不明白的吗?
declear @id varchar(20)SELECT * into #EXCEL导入表
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')if exists(select @name = 表2.ALNAME, @id = 表2.DEST_ID from 表2,#EXCEL导入表,表1 where 表2.ALNAME=#EXCEL导入表.NAME and 表2.DEST_ID=表1.DEST_ID )
begin
delete * from 表3
where 表3.DEST_ID = @id and 表3.NAME = @nameInsert into 表3
(DEST_ID ,NAME,FEE)
SELECT @id,@name,FEE
FROM #EXCEL导入表
end
.xls格式,所特地用临时表,以便你修改