各位朋友,本人有这样一个需求不知是否可以实现,望高手指点一二。现有一部分数据(excel文件),想让其内容导入到数据库某一表中,表中有卡号、总金额、总积分这三列需特殊处理,如果从EXCEL中导入的数据卡号有重复的,那么总金额、总积分采用累加,其他列内容全部替换。不知可否实现,谢谢大家了。例如A EXCEL表格
表名:POS
字段 ID 卡号 金额 积分 ........
1 001 10 10
2 002 10 10
3 003 10 10
---------------------------
B 数据库
表名:VIP
字段 ID 卡号 金额 积分 ........
1 002 20 20
2 003 20 20
3 004 20 20
最后要求的结果是 表名:VIP
字段 ID 卡号 金额 积分 ........
1 001 30 30
2 002 30 30
3 003 30 30
4 004 20 20
表名:POS
字段 ID 卡号 金额 积分 ........
1 001 10 10
2 002 10 10
3 003 10 10
---------------------------
B 数据库
表名:VIP
字段 ID 卡号 金额 积分 ........
1 002 20 20
2 003 20 20
3 004 20 20
最后要求的结果是 表名:VIP
字段 ID 卡号 金额 积分 ........
1 001 30 30
2 002 30 30
3 003 30 30
4 004 20 20
exec sp_addlinkedserver @server='EXCEL2',@srvproduct='EXCEL',@provider='MICROSOFT.JET.OLEDB.4.0',
@datasrc='c:\book1.xls',@provstr='EXCEL 8.0'
FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\book1.xls";User ID=;Password=;Extended properties=Excel 8.0')...spkfk$
select a.*,b.*
from vip a left join (
SELECT *
FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\book1.xls";User ID=;Password=;Extended properties=Excel 8.0')...pos$
) on a.id=b.id
--"c:\book1.xls" 为文件所在路径
--2
SELECT * into #pos
FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\book1.xls";User ID=;Password=;Extended properties=Excel 8.0')...pos$
select a.*,b.*
from vip a left join #pos b
on a.id=b.id
OLE DB 提供程序 'Microsoft.Jet.OLEDB.4.0' 不包含表 'vip$'。该表可能不存在,或当前用户没有使用该表的权限。
from vip a left join (
SELECT *
FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\book1.xls";User ID=;Password=;Extended properties=Excel 8.0')...pos$
)b on a.id=b.id
--"c:\book1.xls" 为文件所在路径
--2
SELECT * into #pos
FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\book1.xls";User ID=;Password=;Extended properties=Excel 8.0')...pos$
select a.*,b.*
from vip a left join #pos b
on a.id=b.id
OLE DB 提供程序 'Microsoft.Jet.OLEDB.4.0' 报错。提供程序未给出有关错误的任何信息。