hi all!
我需要一个存储过程,功能是 根据传入的一个参数:@dir=存放excel的路径 然后
1 建一个临时表#temp 把excel导入的数据都导入
2 把临时表的记录全部返回query1 再把这已导入excel数据的临时表的记录与数据库已存在的表的记录相比较 如果记录内容完全相同就把这些记录返回给query2 ,如果不同就返回给 query3嗯 关键是第二步 大家能提供一些解决方法或者code吗?
谢谢!
我需要一个存储过程,功能是 根据传入的一个参数:@dir=存放excel的路径 然后
1 建一个临时表#temp 把excel导入的数据都导入
2 把临时表的记录全部返回query1 再把这已导入excel数据的临时表的记录与数据库已存在的表的记录相比较 如果记录内容完全相同就把这些记录返回给query2 ,如果不同就返回给 query3嗯 关键是第二步 大家能提供一些解决方法或者code吗?
谢谢!
as
Create Table #t(id int,f1 varchar(50),f2.......)
Exec('insert into #t
SELECT * FROM OPENROWSET(''Microsoft.Jet.OLEDB.4.0'',
''Excel 5.0;HDR=YES;DATABASE='+@Dir+''',sheet1$)')
Select * from #t a Where
Exists (Select * from 数据库某表 b
where a.字段1=b.字段1
and a.字段2=b.字段2
and ......)
Drop Table #t
go
Create PROCEDURE sp_GetQuery3 @dir VARCHAR(50) --取不相同记录
as
Create Table #t(id int,f1 varchar(50),f2.......)
Exec('insert into #t
SELECT * FROM OPENROWSET(''Microsoft.Jet.OLEDB.4.0'',
''Excel 5.0;HDR=YES;DATABASE='+@Dir+''',sheet1$)')
Select * from #t a Where
Not Exists (Select * from 数据库某表 b
where a.字段1=b.字段1
and a.字段2=b.字段2
and ......)
Drop Table #t
go--未测试,根据实际修改
异类查询要求为连接设置 ANSI_NULLS 和 ANSI_WARNINGS 选项。这将确保一致的查询语义。请启用这些选项,然后重新发出查询。”
我用的是ms slq2000 个人版 有影响吗?
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_Excel]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[sp_Excel]
GOSET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GOCREATE PROCEDURE [dbo].[sp_Excel] @dir varchar(40) AS Create Table #t(f0 VARCHAR(100),f1 varchar(100),f2 Varchar(100),f3 VARCHAR(100),f4 VARCHAR(100))
Exec('insert into #t
SELECT * FROM OPENROWSET(''Microsoft.Jet.OLEDB.4.0'',
''Excel 5.0;HDR=YES;DATABASE='+@dir+''',aaa$)')
select * from #t
Drop table #t
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
————————————————————————————