|
当对现有数据库的数据进行分析时,经常需要对某一部分的数据进行分析.此时,使用 1.SQL查询分析器? 但其往往不直观,查找某个关键字又需要重新执行新的SQL. 2.SQLXML模板? 但又不一定有权限建立新的虚拟目录,且某些SQL语句SQLXML模板不支持
数据拆离时也有相似问题。 尤其当不同网络,不同环境,需要重新导入数据,进行分析或拆离,困难尤为明显。 能不能有一种方法,可以将数据脱离于数据库进行分析,需要时再导入到数据库中? XML是个很好的选择! ADO本身支持数据到XML的转换,只需要对其格式进行解析,成为自己的XML文件通用格式,就可以进行本地分析 而对通用XML格式进行数据库映射,就可完成数据重新导入数据库的工作.
下面是一个ADO数据(表的基本数据)与XML数据间的相互转换的类(ASP实现),初步完成表数据的导入、导出。 通用表间关系映射(通过XSD描述),考虑之中,希望各位赐教指点,不胜感激.
一个调用类的例子: example.asp
<!--#include file="transformXML.asp"--> <% Dim aSQL(1,1) Dim oXMLData
'====== 连接数据库过程 ====== '获得数据库连接对象 oDbConn '====== 连接数据库过程 ======
aSQL(0,0) = "PubLable" aSQL(0,1) = "Select * from PubLabel where cLabelName like '%abc%' Order by nLabelID" aSQL(1,0) = "PubUser" aSQL(1,1) = "Select * from PubUser where cUserName like '%abc%' Order by nUserID"
set oXMLData = New TransformData
Call Export() 'Call Import() set oXMLData = nothing
' // 当对象属性有默认值(default())时,可以不用在赋值
Sub Export() ' // 导出数据
oXMLData.aSQlData = aSQL ' 必须 2维SQL语句数组 oXMLData.bIsSave = 1 ' default(1) 是否保存为XML文件 oXMLData.bIsOutput = 1 ' default(0) 是否显示XML数据 oXMLData.sSaveFileName = "Data.xml" ' default(当前时间加随机数) 如果保存XML数据,XML文件名称 oXMLData.sSaveFilePath = "" ' default("") 如果保存XML数据,XML文件路径(相对路径) oXMLData.sEncoding = "gb2312" ' default("gb2312") XML文件编码类型
oXMLData.Export (oDbConn) ' // 导出数据过程
IF (oXMLData.nErrCode<>0) Then ' nErrCode(错误代码)为0,运行成功 Response.Write oXMLData.GetErrExegesis(oXMLData.nErrCode) 'nErrCode(错误代码),通过方法GetErrExegesis() 获得注释 End IF
End Sub
Sub Import() ' // 导入数据
oXMLData.sXMLFile = "Data.xml" ' 必须 数据源XML文件(包含相对路径)
oXMLData.sVacancyCols = "nLabelID" ' 必须 指定某些字段的值可以不导入(屏蔽字段) ' 格式 "nID,dDate" (以‘,’分隔字段)
oXMLData.Import (oDbConn)
IF (oXMLData.nErrCode=0) Then Response.Write "数据导入成功!" Else Response.Write oXMLData.GetErrExegesis(oXMLData.nErrCode) End IF End Sub %>
类的代码: TransformData.asp
<% Class TransformData
'***************************************************** ' Copyright (c) 2003 ' 创 建 人 : moonpiazza ' 日 期 : 2003.5.21 ' 描 述 : ADO数据与XML数据间的转换(ASP实现) ' 版 本 : 1.0 ' 功 能 : ADO数据(表的基本数据)与XML数据间的相互转换 ' 待 改 进 : 表间数据的关联性(通用),数据量大时速度问题 ' ' 版 权 : 欢迎改进,翻版不究 :_) ' '*****************************************************
'***************************************************** ' 公共方法: Export, Import, GetErrExegesis '*****************************************************
'============================= 公共变量 End ============================= Private m_oXMLDOM Private m_oXSLDOM '============================= 公共变量 Begin =============================
'============================= 错误代码定义 Begin ============================= Private m_nErrCode_NotArray Private m_nErrCode_XMLDOM Private m_nErrCode_ReadData Private m_nErrCode_WriteData Private m_nErrCode_Save Private m_nErrCode_EnsFile Private m_nErrCode_ErrFile '============================= 错误代码定义 End =============================
'============================= 属性定义 Begin =============================
Private m_aSQlData Private m_bIsSave Private m_bIsOutput Private m_sSaveFileName Private m_sSaveFilePath Private m_sXMLFile Private m_sVacancyCols Private m_nErrCode Private m_sEncoding Private m_sImportSQL
'***************************************************** ' 属性: aSQlData ' 状态: 可写 ' 类型: 2维数组 ' 描述: SQL语句数组,1维是表名称,2维是相应SQL语句 '***************************************************** Public Property Let aSQlData(ByRef p_aSQlData) m_aSQlData = p_aSQlData End Property
'***************************************************** ' 属性: bIsSave ' 状态: 可写 ' 类型: 数字(0,1) default(1) ' 描述: 导出数据时,是否保存为XML文件 '***************************************************** Public Property Let bIsSave(ByRef p_bIsSave) m_bIsSave = Cint(p_bIsSave) End Property
'***************************************************** ' 属性: bIsOutput ' 状态: 可写 ' 类型: 数字(0,1) default(0) ' 描述: 导出数据时,是否显示XML数据 '***************************************************** Public Property Let bIsOutput(ByRef p_bIsOutput) m_bIsOutput = Cint(p_bIsOutput) End Property
'***************************************************** ' 属性: sSaveFileName ' 状态: 可写,可读 ' 类型: 字符串 default(GetRndFileName()) ' 描述: 导出数据时,如果保存XML数据,XML文件名称 '***************************************************** Public Property Let sSaveFileName(ByRef p_sSaveFileName) m_sSaveFileName = p_sSaveFileName End Property
Public Property Get sSaveFileName() sSaveFileName = m_sSaveFileName End Property
'***************************************************** ' 属性: sSaveFilePath ' 状态: 可写,可读 ' 类型: 字符串 default("") ' 描述: 导出数据时,如果保存XML数据,XML文件路径(相对路径) '***************************************************** Public Property Let sSaveFilePath(ByRef p_sSaveFilePath) m_sSaveFilePath = p_sSaveFilePath End Property
Public Property Get sSaveFilePath() sSaveFilePath = m_sSaveFilePath End Property
'***************************************************** ' 属性: sXMLFile ' 状态: 可写 ' 类型: 字符串 ' 描述: 导入数据时,数据源XML文件(包含相对路径) '***************************************************** Public Property Let sXMLFile(ByRef p_sXMLFile) m_sXMLFile = p_sXMLFile End Property
'***************************************************** ' 属性: sVacancyCols ' 状态: 可写 ' 类型: 字符串 default("") ' 格式 "nID,dDate" (以‘,’分隔字段) ' 描述: 导入数据时,指定某些字段的值可以不导入(屏蔽字段) '***************************************************** Public Property Let sVacancyCols(ByRef p_sVacancyCols) m_sVacancyCols = "," & p_sVacancyCols & "," End Property
'***************************************************** ' 属性: nErrCode ' 状态: 可读 ' 类型: 数字 default(0) ' 描述: 错误
|