MYSQL网站制作之SQL Server与Excel数据互导
应用程序需要使用数据库,数据库本身需要设计、开发和部署。还有MySQL学习教程,客户怎样实施混合系统,或者需要帮助管理多个云服务?excel|server|数据从SQLServer中导进/导出Excel的基础办法/*===================导进/导出Excel的基础办法===================*/
从Excel文件中,导进数据到SQL数据库中,很复杂,间接用上面的语句:
/*========================================================*/
--假如承受数据导进的表已存在
insertinto表select*from
OPENROWSET(MICROSOFT.JET.OLEDB.4.0
,Excel5.0;HDR=YES;DATABASE=c:test.xls,sheet1$)
--假如导进数据并天生表
select*into表from
OPENROWSET(MICROSOFT.JET.OLEDB.4.0
,Excel5.0;HDR=YES;DATABASE=c:test.xls,sheet1$)
/*========================================================*/
--假如从SQL数据库中,导出数据到Excel,假如Excel文件已存在,并且已依照要吸收的数据创立好表头,就能够复杂的用:
insertintoOPENROWSET(MICROSOFT.JET.OLEDB.4.0
,Excel5.0;HDR=YES;DATABASE=c:test.xls,sheet1$)
select*from表
--假如Excel文件不存在,也能够用BCP来导成类Excel的文件,注重巨细写:
--导出表的情形
EXECmaster..xp_cmdshellbcp数据库名.dbo.表名out"c:test.xls"/c-/S"服务器名"/U"用户名"-P"暗码"
--导出查询的情形
EXECmaster..xp_cmdshellbcp"SELECTau_fname,au_lnameFROMpubs..authorsORDERBYau_lname"queryout"c:test.xls"/c-/S"服务器名"/U"用户名"-P"暗码"
/*--申明:
c:test.xls为导进/导出的Excel文件名.
sheet1$为Excel文件的事情表名,一样平常要加上$才干一般利用.
--*/
--下面已说过,用BCP导出的是类Excel文件,实在质为文本文件,
--要导出真实的Excel文件.就用上面的办法
/*--数据导出EXCEL
导出表中的数据到Excel,包括字段名,文件为真实的Excel文件
,假如文件不存在,将主动创立文件
,假如表不存在,将主动创立表
基于通用性思索,仅撑持导出尺度数据范例
--邹建2003.10--*/
/*--挪用示例
p_exporttb@tbname=区域材料,@path=c:,@fname=aa.xls
--*/
ifexists(select*fromdbo.sysobjectswhereid=object_id(N.)andOBJECTPROPERTY(id,NIsProcedure)=1)
dropprocedure.
GO
createprocp_exporttb
@tbnamesysname,--要导出的表名
@pathnvarchar(1000),--文件寄存目次
@fnamenvarchar(250)=--文件名,默许为表名
as
declare@errint,@srcnvarchar(255),@descnvarchar(255),@outint
declare@objint,@constrnvarchar(1000),@sqlvarchar(8000),@fdlistvarchar(8000)
--参数检测
ifisnull(@fname,)=set@fname=@tbname+.xls
--反省文件是不是已存在
ifright(@path,1)set@path=@path+
createtable#tb(abit,bbit,cbit)
set@sql=@path+@fname
insertinto#tbexecmaster..xp_fileexist@sql
--数据库创立语句
set@sql=@path+@fname
ifexists(select1from#tbwherea=1)
set@constr=DRIVER={MicrosoftExcelDriver(*.xls)};DSN=;READONLY=FALSE
+;CREATE_DB="+;DATABASE=+@sql+"
--毗连数据库www.ckuyun.com
exec@err=sp_oacreateadodb.connection,@objout
if@err0gotolberr
exec@err=sp_oamethod@obj,open,null,@constr
if@err0gotolberr
/*--假如掩盖已存在的表,就加高低面的语句
--创立之前先删除表/假如存在的话
select@sql=droptable[+@tbname+]
exec@err=sp_oamethod@obj,execute,@outout,@sql
--*/
--创立表的SQL
select@sql=,@fdlist=
select@fdlist=@fdlist+,[+a.name+]
,@sql=@sql+,[+a.name+]
+casewhenb.namein(char,nchar,varchar,nvarchar)then
text(+cast(casewhena.length>255then255elsea.lengthendasvarchar)+)
whenb.namein(tynyint,int,bigint,tinyint)thenint
whenb.namein(smalldatetime,datetime)thendatetime
whenb.namein(money,smallmoney)thenmoney
elseb.nameend
FROMsyscolumnsaleftjoinsystypesbona.xtype=b.xusertype
whereb.namenotin(image,text,uniqueidentifier,sql_variant,ntext,varbinary,binary,timestamp)
andobject_id(@tbname)=id
select@sql=createtable[+@tbname
+](+substring(@sql,2,8000)+)
,@fdlist=substring(@fdlist,2,8000)
exec@err=sp_oamethod@obj,execute,@outout,@sql
if@err0gotolberr
exec@err=sp_oadestroy@obj
--导进数据
set@sql=openrowset(MICROSOFT.JET.OLEDB.4.0,Excel5.0;HDR=YES
;DATABASE=+@path+@fname+,[+@tbname+$])
exec(insertinto+@sql+(+@fdlist+)select+@fdlist+from+@tbname)
return
lberr:
execsp_oageterrorinfo0,@srcout,@descout
lbexit:
selectcast(@errasvarbinary(4))as毛病号
,@srcas毛病源,@descas毛病形貌
select@sql,@constr,@fdlist
go
--下面是导表的,上面是导查询语句的.
MySQL的支持者们却认为,MySQL所保留的功能都是精华,并且是你部署、MySQL学习教程配置和维护这个数据库所必不可少的一些功能。 作了些试验,发现使用CLR的存储过程或函数在达到一定的阀值的时候,系统性能会呈指数级下滑!这是非常危险的!只使用几个可能没有问题,当一旦大规模使用会造成严重的系统性能问题! varchar(max)\\\\nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。 不过话说回来了,绝大多数的性能优化准则与对sqlserver存储的结构理解息息相关 微软对CLR作了大篇幅的宣传,这是因为数据库产品终于融入.net体系中。最开始我们也是狂喜,感觉对象数据库的一些概念可以实现了。 如果你是从“学习某一种数据库应用软件,从而获得应聘的资本和工作机会”的角度来问的话。 如果你是从“学习某一种数据库应用软件,从而获得应聘的资本和工作机会”的角度来问的话。 原来的计算字段其实和虚拟字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了计算字段的持久化,这就提高了查询的性能,但是会加重insert和update的负担。OLTP慎用。OLAP可以大规模使用。
页:
[1]