您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 第8章 图像和XML数据的
8.18.28.3知识点链接L8.1L8.2L8.3导入读者照片导入读者联系方式查询读者联系方式导入读者照片导入读者联系方式查询读者联系方式实现功能:借书证号为081101的读者的照片保存在D盘根目录下,照片的名称为081101.jpg,现要在SQLServer服务器上将该照片信息导入到图书管理数据库MBOOK中该读者的照片列上。实现方法:新建一个查询窗口,在窗口中输入如下语句:USEMBOOKGOUPDATETReaderSET照片=(SELECT*FROMOPENROWSET(BULKN'D:\081101.jpg',SINGLE_BLOB)ASimage)WHERE借书证号='081101'执行成功后查询081101读者的照片信息:SELECT借书证号,照片FROMTReaderWHRER借书证号='081101'执行结果如下所示:说明:OPENROWSET行集函数用于大容量数据的导入导出,修改照片信息时该函数用于加载已经存在的081101.jpg文件,并返回一个表。使用SELECT语句得到返回的表的内容,语句中为该表定义了别名image。使用UPDATE语句可以直接将得到的内容赋给TReader表的照片列,以二进制格式存储。除了可以加载图片文件,OPENROWSET函数还可以加载XML文件。实现功能:如表8.1所示提供了081101、081102和081103借书证号读者的联系方式,要求将联系方式导入到MBOOK数据库的读者信息表中。方法一:使用UPDATE语句将081101读者的联系方式直接修改为表8.1所示的联系方式,使用的SQL语句如下:USEMBOOKGOUPDATETReaderSET联系方式='联系方式姓名=王林emailWL@interhis.net/email电话13900081101/电话地址邮政编码211101/邮政编码省或直辖市江苏省/省或直辖市市或县南京市/市或县详细地址鼓楼区上海路3号/详细地址/地址/联系方式'WHERE借书证号='081101’执行后使用SELECT语句查询081101的联系方式:SELECT借书证号,联系方式FROMTReaderWHERE借书证号='081101'执行结果如下所示:说明:读者的联系方式是以XML格式的形式存放的,根据XML语法可知,读者081101的联系方式为根元素,根元素下包含了读者的email、电话和地址信息。要存放XML数据,存放数据的列或变量必须为xml数据类型。方法二:将081102读者的联系方式存储在081102.xml文件中,并将该文件导入到MBOOK数据库该读者的联系方式中。在D盘根目录下新建一个文本文档,输入以下代码:?xmlversion=1.0encoding=gb2312?联系方式姓名=程明emailCM@interhis.net/email电话13000081102/电话地址邮政编码211100/邮政编码省或直辖市江苏省/省或直辖市市或县镇江市/市或县详细地址京口区学府路28号/详细地址/地址/联系方式将文件名保存为081102.xml,打开“SQLServerManagementStudio”,新建一个查询窗口,输入如下语句:USEMBOOKGOUPDATETReaderSET联系方式=(SELECT*FROMOPENROWSET(BULKN'D:\081102.xml',SINGLE_BLOB)AStemp_table)WHERE借书证号='081102'执行后使用SELECT语句查询081102的联系方式:SELECT借书证号,联系方式FROMTReaderWHERE借书证号='081102'执行结果如下所示:(1)查询081101读者的详细地址。实现方法:新建一个查询窗口,输入如下语句:USEMBOOKGODECLARE@contactxmlSELECT@contact=联系方式FROMTReaderWHERE借书证号='081101'SELECT@contact.query('/联系方式/地址/详细地址')AS详细地址执行结果如下所示:说明:以上语句中将读者081101的联系方式列上的内容赋给xml变量contact,再通过XQuery语法中的XML数据类型方法query()方法查询xml变量contact中“详细地址”节点的内容。query()方法中的参数指定到“详细地址”节点。(2)查询081102读者“联系方式”中的姓名。实现方法:新建一个查询窗口,输入如下语句:DECLARE@contactxml,@namechar(8)SELECT@contact=联系方式FROMTReaderWHERE借书证号='081102'SET@name=@contact.value('(/联系方式/@姓名)[1]','char(8)')SELECT@name姓名执行结果如下所示:L1.OPENROWSET行集函数当数据是以大容量的文件格式存在时,直接插入的方式显然不太合适。这时可以使用行集函数OPENROWSET来完成。OPENROWSET函数返回一个表,可以在查询的FROM子句中像引用表名那样引用OPENROWSET函数。将OPENROWSET函数返回的内容用做INSERT或其他语句的源表,就可以将数据文件中的数据导入到SQLServer表中。OPENROWSET函数的语法格式如下:OPENROWSET(BULK'data_file',[SINGLE_BLOB|SINGLE_CLOB|SINGLE_NCLOB]})说明:(1)BULK:使用OPENROWSET的BULK行集访问接口读取文件中的数据。在SQLServer中,OPENROWSET无须将数据文件中的数据加载到目标表,便可读取这些数据。这样便可在单个SELECT语句中使用OPENROWSET。(2)data_file:数据文件的完整路径,该文件的数据将被复制到目标表中。(3)SINGLE_BLOB|SINGLE_CLOB|SINGLE_NCLOB:SINGLE_BLO表示将data_file的内容作为类型为varbinary(MAX)的单行单列行集返回;SINGLE_CLOB表示通过以ASCⅡ格式读取data_file,使用当前数据库的排序规则将内容作为类型为varchar(MAX)的单行单列行集返回;SINGLE_NCLOB表示通过以UNICODE格式读取data_file,使用当前数据库的排序规则将内容作为类型为nvarchar(MAX)的单行单列行集返回。(4)与SELECT一起使用的FROM子句可以调用OPENROWSET(BULK...)而非表名,同时可以实现完整的SELECT功能。带有BULK选项的OPENROWSET函数在FROM子句中时,需要使用AS子句指定一个别名。也可以指定列别名,如果未指定列别名列表,则格式化文件必须具有列名,指定列别名会覆盖格式化文件中的列名,例如:SELECT…FROMOPENROWSET(BULK...)AStable_aliasSELECT…FROMOPENROWSET(BULK...)AStable_alias(column_alias,...n)【强化练习】假设081102.jpg文件保存在D盘根目录下,在PXSCJ数据库中新建一个Imagetable表,包含Name和Content两列,分别存储图片文件名和图片文件的内容。使用OPENROWSET函数将081102.jpg文件导入数据表Imagetable中。创建Imagetable表的语句如下:USEPXSCJGOCREATETABLEImagetable(Namechar(20)NOTNULLPRIMARYKEY,Contentvarbinary(MAX)NULL,)插入数据使用如下语句:INSERTINTOImagetable(name,content)SELECT'081102.jpg'ASname,*FROMOPENROWSET(BULKN'D:\081102.jpg',SINGLE_BLOB)ASnote图片插入后可以使用SELECT语句查看插入了的数据:SELECT*FROMImagetable执行结果如下所示:L1.XMLXML(eXtensibleMarkupLanguage)即可扩展标记语言,它与HTML一样,都是SGML(StandardGeneralizedMarkupLanguage,标准通用标记语言)。XML是Internet环境中跨平台的、依赖于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单,易于掌握和使用。XML是一种标准化的文档格式语言,它使得发布者可以创建一个以不同方式查看、显示或打印的文档资源。XML与HTML的设计区别是:XML是用来存储数据的,重在数据本身;而HTML是用来定义数据的,重在数据的显示模式。另外,XML是可扩展的,因为它提供了一个标准机制,使得任意文档构造者都能在任意XML文档中定义新的XML标记,这使得综合的、多平台的、应用到应用的协议的创建降低了门槛。XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的唯一公共语言,虽然不同的应用软件也支持其他的数据交换格式,但不久之后它们都将支持XML,那就意味着程序可以更容易地与Windows、MacOS、Linux以及其他平台下产生的信息结合,然后可以很容易加载XML数据到程序中进行分析,并以XML格式输出结果。XML文档是由DTD和XML文本组成。所谓DTD(DocumentTypeDefinition),简单的说是一组关于标记符的语法规则,表明XML文本是如何组织的。它是保证XML文档格式正确的有效方法,可以通过比较XML文档和DTD文件来确定文档是否符合规范,元素和标签使用是否正确。本小节将从一个简单的XML实例开始介绍XML的语法,实例代码如下:?xmlversion=1.0encoding=ISO-8859-1?notetowang/tofromage=20zhang/fromheadingReminder/headingbodyDon'tforgetmethisweekend!/bodynumber12/number/noteXML文档中的元素还可以带有若干个属性,属性的名称也是由用户自己定义的,属性的值必须添加引号。格式如下:标签名属性名=值…元素内容/标签名文件中的“age=20”即为元素的属性和值。在编写XML文本时需要注意以下几点。XML标签的名称可以包含字母、数字及其他字符,不能以数字或标点符号开始;不能以字符“xml”、“XML”或“Xml”等开始;不能包含空格。XML语法是区分大小写的,所以在定义XML标签时必须保持大小写的一致性,例如,打开开始标签为“head”,结束标签为“/Head”就是错误的写法。XML必须正确地嵌套,例如,以下的标签嵌套关系是错误的:biThistextisboldanditalic/b/i必须修改为:biThistextisboldanditalic/i/bXML文档中允许空元素的存在,所谓的空元素就是只有标签没有实际内容的元素,空元素有两种表示方法。例如:“a/a”或“a/”。在XML文档中所有的空格都会被保留。可以在XML文档中写注释,注释形式与HTML中一样,例如:!--这是注释内容--XML中的实体引用。在XML文档中有一些字符具有特殊意义,例如:如果把字符“”放在XML元素中,会出错,因为解析器会把它当做新元素的开始。为了避免错误,需
本文标题:第8章 图像和XML数据的
链接地址:https://www.777doc.com/doc-3195365 .html