
要用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等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)