怎样将XML文件导入MYSQL

怎样将XML文件导入MYSQL,第1张

要用php 把XML数据导入mysql ,xml里所有的数据导入数据库

我在php手册里找了个例子

to import xml into mysql

$file = "article_2_3032005467xml";

$feed = array();

$key = "";

$info = "";

function startElement($xml_parser, $attrs ) {

global $feed;

}

function endElement($xml_parser, $name) {

global $feed, $info;

$key = $name;

$feed[$key] = $info;

$info = ""; }

function charData($xml_parser, $data ) {

global $info;

$info = $data; }

$xml_parser = xml_parser_create();

xml_set_element_handler($xml_parser, "startElement", "endElement");

xml_set_character_data_handler($xml_parser, "charData" );

$fp = fopen($file, "r");

while ($data = fread($fp, 8192))

!xml_parse($xml_parser, $data, feof($fp));

xml_parser_free($xml_parser);

$sql= "INSERT INTO `article` ( `";

$j=0;

$i=count($feed);

foreach( $feed as $assoc_index => $value )

{

$j++;

$sql= strtolower($assoc_index);

if($i>$j) $sql= "` , `";

if($i <=$j) {$sql= "` ) VALUES ('";}

}

$h=0;

foreach( $feed as $assoc_index => $value )

{

$h++;

$sql= utf8_decode(trim(addslashes($value)));

if($i-1>$h) $sql= "', '";

if($i <=$h) $sql= "','')";

}

$sql=trim($sql);

echo $sql;

需要用到dom4j,你可以从网上下一下,数据库的连接getConnection里的内容自己修改一下,id如果是自增可以不要插入,注意id字段类型,下面是代码(file的路径要设置正确)

import javaio;

import javasqlConnection;

import javasqlDriverManager;

import javasqlSQLException;

import javasqlStatement;

import javautil;

import orgdom4j;

import orgdom4jio;

public class ReadXml {

public static void main(String[] args) throws SQLException {

Connection con=null;

Statement stmt=null;

String sql=null;

int upRow=0;

try {

ClassforName("commicrosoftjdbcsqlserverSQLServerDriver")newInstance();

con=DriverManagergetConnection("jdbc:microsoft:sqlserver://","username","password");

stmt=concreateStatement();

File f = new File("userInfoxml");

SAXReader reader = new SAXReader();

Document doc = readerread(f);

Element root = docgetRootElement();

Element foo;

for (Iterator i = rootelementIterator("userInfo"); ihasNext();) {

foo = (Element) inext();

sql="insert into userinfo (id,name,pwd) value('"+fooelementText("id")+"','"+fooelementText("name")+"','"+fooelementText("pwd")+"')";

upRow=stmtexecuteUpdate(sql);

Systemoutprintln(upRow);

}

} catch (Exception e) {

eprintStackTrace();

}finally{

stmtclose();

conclose();

}

}

}

要将XML文件的数据写进数据库,原来其实很简单,就是把XML文件里的数据取出然后连接到数据库使用insert就OK了,当然这前提是你要了解怎么解析XML文件了,目前解析XML文件主要有SAX,DOM,PULL等方法。具体用法就不一一例举啦,本例使用的是DOM。下面就看代码吧

select from 表名 for xml

以下是详细介绍:

FOR 子句

FOR 子句用于指定 BROWSE 或 XML 选项(BROWSE 和 XML 是不相关的选项)。

语法

[ FOR { BROWSE | XML { RAW | AUTO | EXPLICIT }

[ , XMLDATA ]

[ , ELEMENTS ]

[ , BINARY BASE64 ]

}

]

参数

BROWSE

指定当查看 DB-Library 浏览模式游标中的数据时允许更新。如果表包含时间戳列(用 timestamp 数据类型定义的列),表有唯一索引且 FOR BROWSE 选项在 SELECT 语句的最后发送到 SQL Server,则可以在应用程序中浏览该表。

说明 在含有 FOR BROWSE 选项的 SELECT 语句中无法使用 <lock_hint> HOLDLOCK。

FOR BROWSE 选项不能出现在用 UNION 运算符联接的 SELECT 语句中。

XML

指定查询结果将作为 XML 文档返回。必须指定下列 XML 模式之一:RAW、AUTO、EXPLICIT。

RAW

获得查询结果并将结果集内的各行转换为 XML 元素,用一般标识符 <row /> 作为元素标记。

测试:

select top 2 图书编号=BookNo,图书名称=BookName from sys_books as图书信息 FOR XML raw

结果:

<row 图书编号="B001" 图书名称="1"/><row 图书编号="B002" 图书名称="体育报(上海)"/>

AUTO

以简单的嵌套 XML 树返回查询结果。在 FROM 子句内,每个在 SELECT 子句中至少有一列被列出的表都表示为一个 XML 元素。SELECT 子句中列出的列映射到适当的元素特性。

测试:

select top 2 图书编号=BookNo,图书名称=BookName from sys_books as 图书信息 FOR XML auto

结果:

<图书信息 图书编号="B001" 图书名称="1"/><图书信息 图书编号="B002" 图书名称="体育报(上海)"/>

EXPLICIT

指定显式定义所得到的 XML 树的形状。使用此种模式,要求以一种特定的方式编写查询,以便显式指定有关期望的嵌套的附加信息。

XMLDATA

返回架构,但不将根元素添加到结果中。如果指定了 XMLDATA,它将被追加到文档上。

ELEMENTS

指定列作为子元素返回。否则,列将映射到 XML 特性。

测试:

select top 2 图书编号=BookNo,图书名称=BookName from sys_books as 图书信息 FOR XML AUTO,ELEMENTS

结果:

<图书信息><图书编号>B001</图书编号><图书名称>1</图书名称></图书信息><图书信息><图书编号>B002</图书编号><图书名称>体育报(上海)</图书名称></图书信息>

NARY BASE64

指定查询返回二进制 base64 编码格式的二进制数据。使用 RAW 和 EXPLICIT 模式检索二进制数据时,必须指定该选项。这是 AUTO 模式中的默认值。

存储的时候直接当成字符串存储

string

sql

=

"insert

into

table(xml)

values('<doc></doc>')";

读取的时候先存入string变量

string

xml

=

datatableRows[0]["xml"]ToString();

XmlDocument

doc

=

new

XmlDocument();

docLoadXml(xml);

大容量装载COM接口。如果需要将文档的实体和属性析取到关系表中,最快的方法就是使用SQL Server 2000 Extensible Markup Language 30 Service Pack 1(SQLXML 30 SP1)提供的大容量装载COM接口。

bcp

bulk insert

都可以

bcp 实用工具可以在 Microsoft SQL Server 实例和用户指定格式的数据文件间大容量复制数据。使用 bcp 实用工具可以将大量新行导入 SQL Server 表,或将表数据导入数据文件。

语法举例:

bcp AdventureWorksSalesCurrency2 in Currencydat -T -f Currencyxml

程序里面最好用这个。如果手动,管理器中导入就可以,用net程序也可以,xml可以作为一个数据源 *** 作。

以上就是关于怎样将XML文件导入MYSQL全部的内容,包括:怎样将XML文件导入MYSQL、XML 导入到 MSSQL、怎么把xml文件到sql server数据库中 java等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9495146.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存