1:通過(guò)DOM4J對(duì)xml中數(shù)據(jù)進(jìn)行解析,生成Nodes;
為四川等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及四川網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、四川網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
2:通過(guò)JDBC把Nodes逐個(gè)插入到Mysql中;
建議導(dǎo)出成CSV格式,然后打開(kāi)文件,直接COPY后paste row 導(dǎo)入數(shù)據(jù)庫(kù)中。
我還以為你姥爺也姓畢呢
XML存入數(shù)據(jù)庫(kù) 。你這個(gè)想法不對(duì)。除非你把XML當(dāng)字符串。
或者你要把XML解析成表。(把XML節(jié)點(diǎn)與數(shù)據(jù)庫(kù)對(duì)應(yīng)起來(lái))
不知道你的為什么有這樣的需求。
你可以在數(shù)據(jù)庫(kù)里存XML文件的路徑。
然后在程序里程序里讀取XML。
舉例說(shuō)明如下
xml文件名為: text.xml
xml數(shù)據(jù)文件的結(jié)構(gòu)如下:
node1
node2 name="abc"123/node2
/node1
sql命令如下:
SET @xml = LOAD_FILE('text.xml'); -- 要指定完整的文件位置
SELECT ExtractValue(@xml, '/node1/node2/@name') as name,ExtractValue(@xml, '/node1/node2') as data;
返回?cái)?shù)據(jù)結(jié)果就是:
name | data
abc | 123
將外部數(shù)據(jù)導(dǎo)入(import)數(shù)據(jù)庫(kù)是在數(shù)據(jù)庫(kù)應(yīng)用中一個(gè)很常見(jiàn)的需求。其實(shí)這就是在數(shù)據(jù)的管理和操作中的ETL
(Extract,
transform,
load)的L
(Load)部分,也就是說(shuō),將特定結(jié)構(gòu)(structure)或者格式(format)的數(shù)據(jù)導(dǎo)入某個(gè)目的地(比如數(shù)據(jù)庫(kù),這里我們討論MySQL)。
ETL
Process
本文要討論的內(nèi)容,是如何方便地將多種格式(JSON,
Text,
XML,
CSV)的數(shù)據(jù)導(dǎo)入MySQL之中。
本文大綱:
將Text文件(包括CSV文件)導(dǎo)入MySQL
將XML文件導(dǎo)入MySQL
將JSON文件導(dǎo)入MySQL
使用MySQL
workbench的Table
Data
Export
and
Import
Wizard進(jìn)行JSON或CSV文件的導(dǎo)入導(dǎo)出
1.
將Text文件(包括CSV文件)導(dǎo)入MySQL
這里我們的討論是基于一個(gè)假定,Text
file和CSV
file是有著比較規(guī)范的格式的(properly
formatted),比如說(shuō)每行的每個(gè)數(shù)據(jù)域(field)之間是由一個(gè)共同的分隔符(比如tab:
\t)分隔的。
那么首先,你需要根據(jù)你的數(shù)據(jù)的格式(有哪些域),來(lái)設(shè)計(jì)好數(shù)據(jù)庫(kù)的對(duì)應(yīng)的表
(的Schema)。
舉個(gè)例子,要處理的Text文件或者CSV文件是以\t作為分隔符的,每行有id,
name,
balance這么三個(gè)數(shù)據(jù)域,那么首先我們需要在數(shù)據(jù)庫(kù)中創(chuàng)建這個(gè)表:
CREATE
TABLE
sometable(id
INT,
name
VARCHAR(255),
balance
DECIMAL(8,4));
創(chuàng)建成功以后就可以導(dǎo)入了。操作方式很簡(jiǎn)單:
LOAD
DATA
LOCAL
INFILE
'你的文件路徑(如~/file.csv)'
INTO
TABLE
sometable
FIELDS
TERMINATED
BY
'\t'
[ENCLOSED
BY
'"'(可選)]
LINES
TERMINATED
BY
'\n'
(id,
name,
balance)
這里要注意的是,我們需要開(kāi)啟local-infile這個(gè)MySQL的配置參數(shù),才能夠成功導(dǎo)入。究其原因,從MySQL的Manual中可以看到這么一段話:
LOCAL
works
only
if
your
server
and
your
client
both
have
been
configured
to
permit
it.
For
example,
if
mysqld
was
started
with
--local-infile=0,
LOCAL
does
not
work.
See
Section
6.1.6,
“Security
Issues
with
LOAD
DATA
LOCAL”.
1、輸出數(shù)據(jù)庫(kù)版本變量為xml格式
Shell mysql -X -uroot -proot -e "use test; show variables like '%version%';"
參數(shù)X表示生成xml格式的輸出 , 參數(shù)e表示執(zhí)行后面的命令