仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 651|回复: 7
打印 上一主题 下一主题

[学习教程] MSSQL网页编程之Osql dos命令下的数据导进导出

[复制链接]
谁可相欹 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:34:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
Mysql的存储引擎接口定义良好。有兴趣的开发者可以通过阅读文档编写自己的存储引擎。数据/*******导出到excel
EXECmaster..xp_cmdshellbcpSettleDB.dbo.shanghuoutc:        emp1.xls-c-q-S"GNETDATA/GNETDATA"-U"sa"-P""
/***********导进Excel
SELECT*
FROMOpenDataSource(Microsoft.Jet.OLEDB.4.0,
DataSource="c:        est.xls";UserID=Admin;Password=;Extendedproperties=Excel5.0)...xactions

/*静态文件名
declare@fnvarchar(20),@svarchar(1000)
set@fn=c:        est.xls
set@s=Microsoft.Jet.OLEDB.4.0,
DataSource="+@fn+";UserID=Admin;Password=;Extendedproperties=Excel5.0
set@s=SELECT*FROMOpenDataSource(+@s+)...sheet1$
exec(@s)
*/

SELECTcast(cast(科目编号asnumeric(10,2))asnvarchar(255))+ 转换后的别号
FROMOpenDataSource(Microsoft.Jet.OLEDB.4.0,
DataSource="c:        est.xls";UserID=Admin;Password=;Extendedproperties=Excel5.0)...xactions

/**********************EXCEL导到远程SQL
insertOPENDATASOURCE(
SQLOLEDB,
DataSource=远程ip;UserID=sa;Password=暗码
).库名.dbo.表名(列名1,列名2)
SELECT列名1,列名2
FROMOpenDataSource(Microsoft.Jet.OLEDB.4.0,
DataSource="c:        est.xls";UserID=Admin;Password=;Extendedproperties=Excel5.0)...xactions


/**导进文本文件
EXECmaster..xp_cmdshellbcpdbname..tablenameinc:DT.txt-c-Sservername-Usa-Ppassword

/**导出文本文件
EXECmaster..xp_cmdshellbcpdbname..tablenameoutc:DT.txt-c-Sservername-Usa-Ppassword

EXECmaster..xp_cmdshellbcp"Select*fromdbname..tablename"queryoutc:DT.txt-c-Sservername-Usa-Ppassword

导出到TXT文本,用逗号分隔
execmaster..xp_cmdshellbcp"库名..表名"out"d:        t.txt"-c-t,-Usa-Ppassword


BULKINSERT库名..表名
FROMc:        est.txt
WITH(
FIELDTERMINATOR=;,
ROWTERMINATOR=

)


--/*dBaseIV文件
select*from
OPENROWSET(MICROSOFT.JET.OLEDB.4.0
,dBaseIV;HDR=NO;IMEX=2;DATABASE=C:,select*from[客户材料4.dbf])
--*/

--/*dBaseIII文件
select*from
OPENROWSET(MICROSOFT.JET.OLEDB.4.0
,dBaseIII;HDR=NO;IMEX=2;DATABASE=C:,select*from[客户材料3.dbf])
--*/

--/*FoxPro数据库
select*fromopenrowset(MSDASQL,
Driver=MicrosoftVisualFoxProDriver;SourceType=DBF;SourceDB=c:,
select*from[aa.DBF])
--*/

/**************导进DBF文件****************/
select*fromopenrowset(MSDASQL,
Driver=MicrosoftVisualFoxProDriver;
SourceDB=e:VFP98data;
SourceType=DBF,
select*fromcustomerwherecountry!="USA"orderbycountry)
go
/*****************导出到DBF***************/
假如要导出数据到已天生布局(即现存的)FOXPRO表中,能够间接用上面的SQL语句

insertintoopenrowset(MSDASQL,
Driver=MicrosoftVisualFoxProDriver;SourceType=DBF;SourceDB=c:,
select*from[aa.DBF])
select*from表

申明:
SourceDB=c:指定foxpro表地点的文件夹
aa.DBF指定foxpro表的文件名.




/*************导出到Access********************/
insertintoopenrowset(Microsoft.Jet.OLEDB.4.0,
x:A.mdb;admin;,A表)select*from数据库名..B表

/*************导进Access********************/
insertintoB表selet*fromopenrowset(Microsoft.Jet.OLEDB.4.0,
x:A.mdb;admin;,A表)

文件名为参数
declare@fnamevarchar(20)
set@fname=d:        est.mdb
exec(SELECTa.*FROMopendatasource(Microsoft.Jet.OLEDB.4.0,
+@fname+;admin;,topics)asa)

SELECT*
FROMOpenDataSource(Microsoft.Jet.OLEDB.4.0,
DataSource="f:
orthwind.mdb";JetOLEDB:DatabasePassword=123;UserID=Admin;Password=;)...产物

*********************导进xml 文件

DECLARE@idocint
DECLARE@docvarchar(1000)
--sampleXMLdocument
SET@doc=
<root>
<Customercid="C1"name="Janine"city="Issaquah">
<Orderoid="O1"date="1/20/1996"amount="3.5"/>
<Orderoid="O2"date="4/30/1997"amount="13.4">Customerwasverysatisfied
</Order>
</Customer>
<Customercid="C2"name="Ursula"city="Oelde">
<Orderoid="O3"date="7/14/1999"amount="100"note="Wrapitblue
whitered">
<Urgency>Important</Urgency>
HappyCustomer.
</Order>
<Orderoid="O4"date="1/20/1996"amount="10000"/>
</Customer>
</root>

--CreateaninternalrepresentationoftheXMLdocument.
EXECsp_xml_preparedocument@idocOUTPUT,@doc

--ExecuteaSELECTstatementusingOPENXMLrowsetprovider.
SELECT*
FROMOPENXML(@idoc,/root/Customer/Order,1)
WITH(oidchar(5),
amountfloat,
commentntexttext())
EXECsp_xml_removedocument@idoc



???????

/**********************Excel导到Txt****************************************/
想用
select*intoopendatasource(...)fromopendatasource(...)
完成将一个Excel文件内容导进到一个文本文件

假定Excel中有两列,第一列为姓名,第二列为很行帐号(16位)
且银行帐号导出到文本文件后分两部分,前8位和后8位分隔。


邹健:
假如要用你下面的语句拔出的话,文本文件必需存在,并且有一行:姓名,银行账号1,银行账号2
然后就能够用上面的语句举行拔出
注重文件名和目次依据你的实践情形举行修正.

insertinto
opendatasource(MICROSOFT.JET.OLEDB.4.0
,Text;HDR=Yes;DATABASE=C:
)...[aa#txt]
--,aa#txt)
--*/
select姓名,银行账号1=left(银行账号,8),银行账号2=right(银行账号,8)
from
opendatasource(MICROSOFT.JET.OLEDB.4.0
,Excel5.0;HDR=YES;IMEX=2;DATABASE=c:a.xls
--,Sheet1$)
)...[Sheet1$]



假如你想间接拔出并天生文本文件,就要用bcp

declare@sqlvarchar(8000),@tbnamevarchar(50)

--起首将excel表内容导进到一个全局一时表
select@tbname=[##temp+cast(newid()asvarchar(40))+]
,@sql=select姓名,银行账号1=left(银行账号,8),银行账号2=right(银行账号,8)
into+@tbname+from
opendatasource(MICROSOFT.JET.OLEDB.4.0
,Excel5.0;HDR=YES;IMEX=2;DATABASE=c:a.xls
)...[Sheet1$]
exec(@sql)

--然后用bcp从全局一时表导出到文本文件
set@sql=bcp"+@tbname+"out"c:aa.txt"/S"(local)"/P""/c
execmaster..xp_cmdshell@sql

--删除一时表
exec(droptable+@tbname)


/********************导全部数据库*********************************************/

用bcp完成的存储历程


/*
完成数据导进/导出的存储历程
依据分歧的参数,能够完成导进/导出全部数据库/单个表
挪用示例:
--导出挪用示例
----导出单个表
execfile2tablezj,,,xzkh_sa..区域材料,c:zj.txt,1
----导出全部数据库
execfile2tablezj,,,xzkh_sa,C:docman,1

--导进挪用示例
----导进单个表
execfile2tablezj,,,xzkh_sa..区域材料,c:zj.txt,0
----导进全部数据库
execfile2tablezj,,,xzkh_sa,C:docman,0

*/
ifexists(select1fromsysobjectswherename=File2Tableandobjectproperty(id,IsProcedure)=1)
dropprocedureFile2Table
go
createprocedureFile2Table
@servernamevarchar(200)--服务器名
,@usernamevarchar(200)--用户名,假如用NT考证体例,则为空
,@passwordvarchar(200)--暗码
,@tbnamevarchar(500)--数据库.dbo.表名,假如不指定:.dbo.表名,则导出数据库的一切用户表
,@filenamevarchar(1000)--导进/导前路径/文件名,假如@tbname参数指明是导出全部数据库,则这个参数是文件寄存路径,文件名主动用表名.txt
,@isoutbit--1为导出,0为导进
as
declare@sqlvarchar(8000)

if@tbnamelike%.%.%--假如指定了表名,则间接导出单个表
begin
set@sql=bcp+@tbname
+casewhen@isout=1thenoutelseinend
+"+@filename+"/w
+/S+@servername
+casewhenisnull(@username,)=thenelse/U+@usernameend
+/P+isnull(@password,)
execmaster..xp_cmdshell@sql
end
else
begin--导出全部数据库,界说游标,掏出一切的用户表
declare@m_tbnamevarchar(250)
ifright(@filename,1)set@filename=@filename+

set@m_tbname=declare#tbcursorforselectnamefrom+@tbname+..sysobjectswherextype=U
exec(@m_tbname)
open#tb
fetchnextfrom#tbinto@m_tbname
while@@fetch_status=0
begin
set@sql=bcp+@tbname+..+@m_tbname
+casewhen@isout=1thenoutelseinend
+"+@filename+@m_tbname+.txt"/w
+/S+@servername
+casewhenisnull(@username,)=thenelse/U+@usernameend
+/P+isnull(@password,)
execmaster..xp_cmdshell@sql
fetchnextfrom#tbinto@m_tbname
end
close#tb
deallocate#tb
end
go


/*************Oracle**************/
EXECsp_addlinkedserverOracleSvr,
Oracle7.3,
MSDAORA,
ORCLDB
GO

deletefromopenquery(mailser,select*fromyulin)

select*fromopenquery(mailser,select*fromyulin)

updateopenquery(mailser,select*fromyulinwhereid=15)setdisorder=555,catago=888

insertintoopenquery(mailser,selectdisorder,catagofromyulin)values(333,777)



增补:

关于用bcp导出,是没有字段名的.

用openrowset导出,必要事前建好表.

用openrowset导进,除ACCESS及EXCEL外,均不撑持非本机数据导进
2008年1月16号MySQLAB被Sun公司收购。而2009年,SUN又被Oracle收购。就这样如同一个轮回,MySQL成为了Oracle公司的另一个数据库项目。
小妖女 该用户已被删除
沙发
发表于 2015-1-19 16:58:11 | 只看该作者
SQL语言是学习所有数据库产品的基础,无论你是做数据库管理还是做数据库开发都是这样。不过具体学习的侧重点要看你将来做哪一块,如果是做数据库管理(DBA),侧重点应该放在SQLServer的系统管理上.
乐观 该用户已被删除
板凳
发表于 2015-1-25 12:28:07 | 只看该作者
SP4包括用于以下SQLServer2000组件的程序包:Database组件(下载文件:SQL2000-KB884525-SP4-x86.EXE)更新SQLServer2000的32位Database组件,包括数据库引擎、复制、客户端连接组件及工具。有关其他信息,请参阅ReadmeSql2k32Sp4.htm。AnalysisServices组件(下载文件:SQL2000.AS-KB884525-SP4-x86.EXE)更新SQLServer2000的32位AnalysisServices。
分手快乐 该用户已被删除
地板
发表于 2015-2-2 22:05:11 | 只看该作者
一个是把SQL语句写到客户端,可以使用DataSet进行加工;
海妖 该用户已被删除
5#
发表于 2015-2-8 10:53:47 | 只看该作者
原理很简单,对要求长时间计算某一时间点的报表生成和防用户操作错误很有帮助。但是比起Oracle10g的闪回技术还是细粒度不够。可惜!
飘灵儿 该用户已被删除
6#
发表于 2015-2-25 10:08:11 | 只看该作者
一个百万级别的基本信息表A,一个百万级别的详细记录表B,A中有个身份证id,B中也有身份id;先要找出A中在B的详细记录。
变相怪杰 该用户已被删除
7#
发表于 2015-3-15 12:15:51 | 只看该作者
如安全管理、备份恢复、性能监控和调优等,SQL只要熟悉基本操作就可以,只要程序设计部分只要稍加了解即可(如存储过程、触发器等)。
简单生活 该用户已被删除
8#
发表于 2015-3-22 01:09:05 | 只看该作者
一个百万级别的基本信息表A,一个百万级别的详细记录表B,A中有个身份证id,B中也有身份id;先要找出A中在B的详细记录。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 23:39

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表