仓酷云
标题:
MSSQL网页编程之代码完成数据库转换[sql2000 VS DBF格局...
[打印本页]
作者:
逍遥一派
时间:
2015-1-16 22:37
标题:
MSSQL网页编程之代码完成数据库转换[sql2000 VS DBF格局...
支持大型的数据库。可以处理拥有上千万条记录的大型数据库。数据|数据库|转换这里,就SqlServer,DBF两种格局的转化成绩做个总结。
一:从dBase文件中,导进数据到SQL数据库中,很复杂,间接用上面的语句:
/*===================================================================*/
--假如承受数据导进的表已存在
insertinto表select*from
openrowset(MICROSOFT.JET.OLEDB.4.0
,dBase5.0;DATABASE=c:,select*from[test.dbf])
--假如导进数据并天生表
select*into表from
openrowset(MICROSOFT.JET.OLEDB.4.0
,dBase5.0;DATABASE=c:,select*from[test.dbf])
/*===================================================================*/
--假如从SQL数据库中,导出数据到dBase,假如dBase文件已存在,就能够复杂的用:
insertinto
openrowset(MICROSOFT.JET.OLEDB.4.0
,dBase5.0;DATABASE=c:,select*from[test.dbf])
select*from表
/*--申明:
DATABASE=c:c:是dbf文件的寄存目次
select*from[test.dbf]test.dbf是指dbf文件名
--*/
二假如dBase文件不存在,就必要用到上面的存储历程了.
/*--数据导出dBase
导出表中的数据到dBase,假如文件不存在,将主动创立文件
基于通用性思索,仅撑持导出尺度数据范例
--*/
/*--挪用示例
--导出dBase
p_exporttb@tbname=区域材料,@path=c:,@over=0
--*/
ifexists(select*fromdbo.sysobjectswhereid=object_id(N[dbo].[p_exporttb])andOBJECTPROPERTY(id,NIsProcedure)=1)
dropprocedure[dbo].[p_exporttb]
GO
createprocp_exporttb
@tbnamesysname,--要导出的表名
@pathnvarchar(1000),--文件寄存目次
@fnamenvarchar(250)=,--文件名,默许为表名
@overbit=0--是不是掩盖已存在的文件,假如不掩盖,则间接追加
as
declare@errint,@srcnvarchar(255),@descnvarchar(255),@outint
declare@objint,@constrnvarchar(1000),@sqlvarchar(8000),@fdlistvarchar(8000)
--参数检测
ifisnull(@fname,)=set@fname=@tbname+.dbf
--反省文件是不是已存在
ifright(@path,1)set@path=@path+
createtable#tb(abit,bbit,cbit)
set@sql=@path+@fname
insertinto#tbexecmaster..xp_fileexist@sql
ifexists(select1from#tbwherea=1)
if@over=1
begin
set@sql=del+@sql
execmaster..xp_cmdshell@sql,no_output
end
else
set@over=0
else
set@over=1
--数据库创立语句
set@sql=@path+@fname
set@constr=Provider=Microsoft.Jet.OLEDB.4.0;ExtendedProperties="dBASE5.0;
+;HDR=NO;DATABASE=+@path+"
--毗连数据库
exec@err=sp_oacreateadodb.connection,@objout
if@err0gotolberr
exec@err=sp_oamethod@obj,open,null,@constr
if@err0gotolberr
--创立表的SQL
select@sql=,@fdlist=
select@fdlist=@fdlist+,+a.name
,@sql=@sql+,[+a.name+]
+casewhenb.namein(char,nchar,varchar,nvarchar)then
text(+cast(casewhena.length>250then250elsea.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[+@fname
+](+substring(@sql,2,8000)+)
,@fdlist=substring(@fdlist,2,8000)
if@over=1
begin
exec@err=sp_oamethod@obj,execute,@outout,@sql
if@err0gotolberr
end
exec@err=sp_oadestroy@obj
set@sql=openrowset(MICROSOFT.JET.OLEDB.4.0,dBase5.0;DATABASE=
+@path+,select*from[+@fname+])
--导进数据
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是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQLAB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。
作者:
小女巫
时间:
2015-1-19 18:59
多走走一此相关论坛,多看一些实例开发,多交流0经验,没什么的,我也是刚学没多久!加油
作者:
深爱那片海
时间:
2015-1-28 09:33
始终遗憾SQLServer的登陆无法分配CPU/内存占用等指标数。如果你的SQLServer给别人分配了一个只可以读几个表的权限,而这个家伙疯狂的死循环进行连接查询,会给你的系统带来很大的负担。
作者:
因胸联盟
时间:
2015-2-5 17:05
我个人认为就是孜孜不懈的学习
作者:
分手快乐
时间:
2015-2-13 00:20
连做梦都在想页面结构是怎么样的,绝非虚言
作者:
莫相离
时间:
2015-3-3 11:47
理解了存储结构,再阅读下性能优化的章节基本上会对sqlserver有个清晰地认识
作者:
金色的骷髅
时间:
2015-3-11 10:50
比如,MicrosoftSQLServer2008的某一个版本可以满足现在的这个业务的需要,而且价格还比Oracle11g要便宜,那么这一产品就是适合的。
作者:
只想知道
时间:
2015-3-18 07:05
另一个是把SQL语句写到服务器端,就是所谓的SP(存储过程);
作者:
逍遥一派
时间:
2015-3-25 12:56
如果,某一版本可以提供强大的并发响应,但是没有Oracle的相应版本稳定,或者价格较贵,那么,它就是不适合的。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2