insert into PhoneNum(UserName,Number)
SELECT * FROM openrowset('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=D:\Book1.xls','select * from [sheet1$]')我需要将本地的Excel导入到远程的服务器的数据库下,这句不行啊 !!
怎么弄??要上将文件先传到服务器上,再导入太麻烦了,有没有什么SQL语句一次搞定啊 ??
关键是这个客户端的IP他也不一定啊
SELECT * FROM openrowset('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=D:\Book1.xls','select * from [sheet1$]')我需要将本地的Excel导入到远程的服务器的数据库下,这句不行啊 !!
怎么弄??要上将文件先传到服务器上,再导入太麻烦了,有没有什么SQL语句一次搞定啊 ??
关键是这个客户端的IP他也不一定啊
解决方案 »
- 简单又复杂,大家帮我看看怎么回事啊?
- 如何找出@后面是xxx.com.hk的的数据
- 统计每个视图记录的条数
- 求助,最近消耗大量资源的查询,“FETCH API_CURSOR0000000000000116 ”
- count()聚合函数的问题
- SQL 根据参数传递来判断是否将某一字段作为查询条件,实现选择性条件查询
- 关于SQL server workflow designer,该工具在什么地方可以找到?
- help me ~~~ ~~~ ~~~ 装不了sql server 2000
- SQL SERVER 2000数据引入问题???
- 关于事务控制,还有一点就搞定了,大家帮忙,在线。
- 关于随机数据生成
- 我最近因为工作的原因.想用delphi2009 +sql2000 做 c/s 问题
drop procedure [dbo].[p_exporttb]
GO/**//*--数据导出EXCEL
导出表中的数据到Excel,包含字段名,文件为真正的Excel文件
,如果文件不存在,将自动创建文件
,如果表不存在,将自动创建表
基于通用性考虑,仅支持导出标准数据类型--邹建 2003.10(引用请保留此信息)--*//**//*--调用示例 p_exporttb @tbname='地区资料',@path='c:',@fname='aa.xls'
--*/
create proc p_exporttb
@tbname sysname, --要导出的表名
@path nvarchar(1000), --文件存放目录
@fname nvarchar(250)='' --文件名,默认为表名
as
declare @err int,@src nvarchar(255),@desc nvarchar(255),@out int
declare @obj int,@constr nvarchar(1000),@sql varchar(8000),@fdlist varchar(8000)--参数检测
if isnull(@fname,'')='' set @fname=@tbname+'.xls'--检查文件是否已经存在
if right(@path,1)<>'' set @path=@path+''
create table #tb(a bit,b bit,c bit)
set @sql=@path+@fname
insert into #tb exec master..xp_fileexist @sql--数据库创建语句
set @sql=@path+@fname
if exists(select 1 from #tb where a=1)
set @constr='DRIVER={Microsoft Excel Driver (*.xls)};DSN='''';READONLY=FALSE'
+';CREATE_DB="'+@sql+'";DBQ='+@sql
else
set @constr='Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="Excel 8.0;HDR=YES'
+';DATABASE='+@sql+'"'
--连接数据库
exec @err=sp_oacreate 'adodb.connection',@obj out
if @err<>0 goto lberrexec @err=sp_oamethod @obj,'open',null,@constr
if @err<>0 goto lberr/**//*--如果覆盖已经存在的表,就加上下面的语句
--创建之前先删除表/如果存在的话
select @sql='drop table ['+@tbname+']'
exec @err=sp_oamethod @obj,'execute',@out out,@sql
--*/--创建表的SQL
select @sql='',@fdlist=''
select @fdlist=@fdlist+',['+a.name+']'
,@sql=@sql+',['+a.name+'] '
+case
when b.name like '%char'
then case when a.length>255 then 'memo'
else 'text('+cast(a.length as varchar)+')' end
when b.name like '%int' or b.name='bit' then 'int'
when b.name like '%datetime' then 'datetime'
when b.name like '%money' then 'money'
when b.name like '%text' then 'memo'
else b.name end
FROM syscolumns a left join systypes b on a.xtype=b.xusertype
where b.name not in('image','uniqueidentifier','sql_variant','varbinary','binary','timestamp')
and object_id(@tbname)=id
select @sql='create table ['+@tbname
+']('+substring(@sql,2,8000)+')'
,@fdlist=substring(@fdlist,2,8000)
exec @err=sp_oamethod @obj,'execute',@out out,@sql
if @err<>0 goto lberrexec @err=sp_oadestroy @obj--导入数据
set @sql='openrowset(''MICROSOFT.JET.OLEDB.4.0'',''Excel 8.0;HDR=YES;IMEX=1
;DATABASE='+@path+@fname+''',['+@tbname+'$])'exec('insert into '+@sql+'('+@fdlist+') select '+@fdlist+' from '+@tbname)returnlberr:
exec sp_oageterrorinfo 0,@src out,@desc out
lbexit:
select cast(@err as varbinary(4)) as 错误号
,@src as 错误源,@desc as 错误描述
select @sql,@constr,@fdlist
go
--charry0110(晓风残月)
--*远程库select * from openrowset(''SQLOLEDB'',''远程服务器名'';''用户名'';''密码'';''库名.dbo.表名'') insert into openrowset(''SQLOLEDB'',''BERRY'';''sa'';''sa'',tt.dbo.ALaw_BestbigPunish)(OneName) select ''c''--添加select * from openrowset(''SQLOLEDB'',''BERRY'';''sa'';''sa'',tt.dbo.ALaw_FilePunish)--选择delete from openrowset(''SQLOLEDB'',''BERRY'';''sa'';''sa'',tt.dbo.ALaw_BestbigPunish)--删除update openrowset(''SQLOLEDB'',''BERRY'';''sa'';''sa'',tt.dbo.ALaw_BestbigPunish)--更新set OneName=''b''--注意''192.168.18.252'';''sa'';''abc''中间是";",而不是","。select a.* from OPENQUERY(''SQLOLEDB'',''BERRY'';''sa'';''sa'',库名.dbo.表名) aSELECT a.* FROM OPENQUERY (''oradb'',''192.168.0.111'';''sa'';''sa'',库名.dbo.表名) aSELECT * FROM OPENDATASOURCE(''SQLOLEDB'',''Data Source=192.168.0.111;User ID=sa;Password=sa'').tt.dbo.ALaw_BestbigPunishINSERT INTO OPENDATASOURCE(''SQLOLEDB'',''Data Source=192.168.0.111;User ID=sa;Password=sa'').tt.dbo.ALaw_FilePunish(CaseName) select Num from aa.dbo.ydy select * from OPENROWSET(''SQLOLEDB'',''192.168.0.111'';''sa'';''sa'', ''select * from tt.dbo.ALaw_FilePunish'')insert into OPENROWSET(''SQLOLEDB'',''192.168.0.111'';''sa'';''sa'', ''select CaseName from tt.dbo.ALaw_FilePunish'') SELECT Num FROM aa.dbo.ydy--第二个参数webconfig连接字符串可以使用delphi、visual studio等开发工具中的ADO控件自动生成相应的连接字符串--*Excelselect a.* from OpenRowSet(''Microsoft.Jet.OLEDB.4.0'',''EXCEL 8.0;DataBase=D:\test.xls'',sheet1$) aselect a.* into ydy from OpenRowSet(''Microsoft.Jet.OLEDB.4.0'',''EXCEL 8.0;DataBase=D:\test.xls'',sheet1$) aSELECT a.* FROM OpenDataSource(''Microsoft.Jet.OLEDB.4.0'',''Data Source= "D:\test.xls";Extended properties=Excel 8.0'')...sheet1$ a select * from ydy--注意sheet1$是否正确--*AccessSELECT * FROM OPENROWSET(''Microsoft.Jet.OLEDB.4.0'',''D:\db.mdb'';''admin'';'''',''SELECT * FROM vote'')select * from OPENDATASOURCE(''Microsoft.Jet.OLEDB.4.0'', ''Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\db.mdb;Persist Security Info=False'')...vote--*txtselect * from OPENROWSET(''MICROSOFT.JET.OLEDB.4.0'',''Text;DATABASE=D:\'',[sopendata#txt])select * from OPENDATASOURCE(''MICROSOFT.JET.OLEDB.4.0'',''Text;DATABASE=D:\'')...[sopendata#txt]delete from OPENROWSET(''MICROSOFT.JET.OLEDB.4.0'',''Text;DATABASE=D:\'', [sopendata#txt])/*ID,Name,Num1,Jim,32,Kate,43,Tom,5*/--在这里文件名中的.要使用#代替,在向文本导出时,不仅文本文件要存在,而且第一行必须和要导出表的字段一至--非SQL Server数据库在OPENDATASOURCE(...)后面引用数据库中的表时使用"...”,insert into OPENROWSET(''MICROSOFT.JET.OLEDB.4.0'',''Text;DATABASE=D:\'',[sopendata#txt])select * from t1--*sql不支持导入word --解决一:文本文件,可惜这样是要求这些数据排版得有规律。 --解决二:一般是先拷贝进excel,然后再导入sqlserver的 ----bcp--假设要从硬盘文件c:\DT.''txt''中导入文件,则如下代码实现:EXEC master..xp_cmdshell ''bcp "aa.dbo.ydy" in D:\dbo.txt -c -charry -sa -sa''--假设导出文件到c:\DT.''txt'',则如下代码实现:EXEC master..xp_cmdshell ''bcp "aa.dbo.ydy" out c:\DT.txt -c -Sservername -Usa -Ppassword''EXEC master..xp_cmdshell ''bcp "Select * from dbname..tablename"queryout c:\DT.txt -c -Sservername -Usa -Ppassword''
2.本地安装一sql server
建读excel表的视图
远程数据库再读本地数据库视图