您的位置:首页 > 数据库

数据库导出xml、htm、csv、sql代码

2011-12-30 01:39 239 查看
数据库导出xml、htm、csv、sql代码

用法:ExportDB.asp?sql=select语句&table=表名(可选)&filetype=导出格式(xml,htm,csv,sql)&pid=自动编号字段名(仅当导出sql类型时有用)

2004-8-11 更新

<!--#include file='../conn.asp'-->

<%

'数据库导出记录代码

'用法:

'ExportDB.asp?sql=select语句&tablename=表名(可选)&filetype=导出格式(xml,htm,csv,sql)&pid=自动编号字段名(仅当导出sql类型时有用)

dim tablename,filetype,fieldPid

sql = request("sql")

tablename = request("tablename")

filetype = lcase(request("filetype"))

fieldPid = request("pid")

if fieldPid = "" then

fieldPid = "id"

end if

fieldPid = lcase(fieldPid)

if lcase(left(sql,6))<>"select" then

Response.write "sql语句必须为select * from where ......."

Response.end

end if

if tablename = "" then

tablename = "数据导出结果"

end if

function HTMLEncode(fString)

if not isnull(fString) then

fString = Server.HTMLEncode(fString)

fString = Replace(fString, CHR(10) & CHR(10), "</P><P> ")

fString = Replace(fString, CHR(10), "<BR> ")

fString = Replace(fString, CHR(9), "  ")

HTMLEncode = fString

end if

end function

function Myreplace(str)

if not isnull(str) then

fString = Replace(fString,"""", """""")

Myreplace = str

else

Myreplace = ""

end if

end function

function Myreplace2(str)

if not isnull(str) then

fString = Replace(fString,"'", "''")

Myreplace2 = str

else

Myreplace2 = ""

end if

end function

dim def_export_sep,def_export_val

def_export_sep = ","

def_export_val = """"

Set rs = Conn.Execute(sql)

'导出XML文件

if filetype="xml" then

Response.contenttype="text/xml"

Response.Charset = "gb2312"

Response.AddHeader "Content-Disposition", "attachment;filename="&tablename&".xml"

Response.write "<?xml version=""1.0"" encoding=""gb2312""?>" & vbnewline

Response.write "<root>"

strLine=""

dim thefield(50)

i = 0

For each x in rs.fields

thefield(i)=x.name

i=i+1

Next

While rs.EOF =false

strLine= vbnewline&chr(9)&"<row>"

k=0

For each x in rs.fields

strLine= strLine & vbnewline&chr(9)&chr(9)&"<"&thefield(k)&">"

if instr(x.value,"<")>0 or instr(x.value,">")>0 or instr(x.value,"&")>0 or len(x.value)>255 then

strLine= strLine &"<![CDATA["& x.value &"]]>"

else

strLine= strLine & x.value

end if

strLine= strLine &"</"&thefield(k)&">"

k=k+1

Next

rs.MoveNext

Response.write strLine &vbnewline& chr(9)&"</row>"

Wend

Response.write vbnewline&"</root>"

'导出sql文件

elseif filetype="sql" then

Response.contenttype="text/sql"

Response.AddHeader "Content-Disposition", "attachment;filename="&tablename&".sql"

strLine=""

dim sql_insert

For each x in rs.fields

if lcase(x.name)<>fieldPid then '如果是自动编号

strLine= strLine & def_export_val & x.name & def_export_val & def_export_sep

end if

Next

strLine = replace(left(strLine,len(strLine)-1),"""","")

strLine = "insert into ["&tablename&"] (" & strLine & ") values "

sql_insert = strLine

'Response.write strLine & vbnewline

'response.end

While rs.EOF =false

strLine= ""

def_export_val = "'"

For each x in rs.fields

if lcase(x.name)<>fieldPid then

'2004-8-11更新 Null值时无法导出的bug。

x_value = x.value

if isnull(x_value) or len(x_value) = 0 then

x_value = ""

else

x_value = replace(x_value,"'","''")

end if

strLine= strLine & def_export_val & x_value & def_export_val & def_export_sep

end if

Next

rs.MoveNext

strLine = left(strLine,len(strLine)-1)

Response.write sql_insert & "("& strLine &")*" & vbnewline

Wend

elseif filetype="csv" then

Response.contenttype="text/csv"

Response.AddHeader "Content-Disposition", "attachment;filename="&tablename&".csv"

strLine=""

For each x in rs.fields

strLine= strLine & def_export_val & x.name & def_export_val & def_export_sep

Next

Response.write strLine & vbnewline

While rs.EOF =false

strLine= ""

For each x in rs.fields

strLine= strLine & def_export_val & Myreplace(x.value) & def_export_val & def_export_sep

Next

rs.MoveNext

Response.write strLine & vbnewline

Wend

else

if filetype="htm" then'弹出下载html的对话框

Response.contenttype="application/ms-download"

Response.AddHeader "Content-Disposition", "attachment;filename="&tablename&".htm"

end if

%>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<META NAME="Author" CONTENT="51windows,海娃,haiwa">

<META NAME="Description" CONTENT="Power by 51windows.Net">

<title>导出数据 - www.51windows.Net</title>

<style>

<!--

body,input,select { font-family: Tahoma; font-size: 8pt }

th { font-family: Tahoma; font-size: 8pt;padding:3px;color:#FFFFFF;background-color:#999999;}

td { font-family: Tahoma; font-size: 8pt;padding:3px;background-color:#EFEFEF;}

-->

</style>

</head>

<BODY style="overflow:auto;" topmargin=2 bgcolor=buttonface>

<form method="post" name=myform>

SQL:<input type="text" name="sql" value="<% = sql%>">

表名:<input type="text" name="tablename" value="<% = tablename %>" size="8">

导出格式:<select size="1" name="filetype">

<option value="">请选择</option>

<option <%if filetype = "htm" then Response.write "selected "%>value="htm">htm</option>

<option <%if filetype = "xml" then Response.write "selected "%>value="xml">xml</option>

<option <%if filetype = "csv" then Response.write "selected "%>value="csv">csv</option>

<option <%if filetype = "sql" then Response.write "selected "%>value="sql">sql</option>

</select>

自动编号字段名:<input type="text" name="pid" value="<% = fieldPid%>" size="8"><input type="submit" value="确定">

</form>

<div align="center">

<table border="0" cellpadding="0" cellspacing="1" bgcolor="#000000">

<tr>

<%

i=0

For each x in rs.fields

strLine= strLine &chr(9)&chr(9)&"<th align=""center"">"& x.name &"</th>"& vbnewline

Next

Response.write strLine&chr(9)&"</tr>"& vbnewline & vbnewline

While rs.EOF =false

i=i+1

Response.write chr(9)&"<tr>"& vbnewline

strLine= ""

For each x in rs.fields

strLine= strLine &chr(9)&chr(9)&"<td>"& HTMLEncode(x.value) &"</td>"& vbnewline

Next

rs.MoveNext

Response.write strLine

Response.write chr(9)&"</tr>"& vbnewline & vbnewline

Wend

Response.write "</table>"& vbnewline

if filetype<>"htm" and filetype<>"xls" and filetype<>"sql" then

Response.write "<p style='line-height:160%;'>"&i&"条记录 <a href='?tablename="& tablename &"&pid="& fieldPid &"&filetype=htm&sql="&server.urlencode(sql)&"'>导出HTML</a>"

Response.write "|<a href='?tablename="& tablename &"&pid="& fieldPid &"&filetype=csv&sql="&server.urlencode(sql)&"'>导出EXCEL</a>"

Response.write "|<a href='?tablename="& tablename &"&pid="& fieldPid &"&filetype=xml&sql="&server.urlencode(sql)&"'>导出XML</a>"

Response.write "|<a href='?tablename="& tablename &"&pid="& fieldPid &"&filetype=sql&sql="&server.urlencode(sql)&"'>导出SQL</a>"& vbnewline

end if

Response.write "<p>Power by <A HREF=""http://www.51windows.Net"" target=""_blank"">51windows.Net</A>"& vbnewline

Response.write "</div>"& vbnewline

Response.write "</BODY>"& vbnewline

Response.write "</HTML>"& vbnewline

end if

rs.close

conn.close

Set rs=nothing

Set conn=nothing

%>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: