本文目錄一覽:
如何將 JSON,Text,XML,CSV 數據文件導入 MySQL
將外部數據導入(import)資料庫是在資料庫應用中一個很常見的需求。其實這就是在數據的管理和操作中的ETL
(Extract,
transform,
load)的L
(Load)部分,也就是說,將特定結構(structure)或者格式(format)的數據導入某個目的地(比如資料庫,這裡我們討論MySQL)。
ETL
Process
本文要討論的內容,是如何方便地將多種格式(JSON,
Text,
XML,
CSV)的數據導入MySQL之中。
本文大綱:
將Text文件(包括CSV文件)導入MySQL
將XML文件導入MySQL
將JSON文件導入MySQL
使用MySQL
workbench的Table
Data
Export
and
Import
Wizard進行JSON或CSV文件的導入導出
1.
將Text文件(包括CSV文件)導入MySQL
這裡我們的討論是基於一個假定,Text
file和CSV
file是有著比較規範的格式的(properly
formatted),比如說每行的每個數據域(field)之間是由一個共同的分隔符(比如tab:
\t)分隔的。
那麼首先,你需要根據你的數據的格式(有哪些域),來設計好資料庫的對應的表
(的Schema)。
舉個例子,要處理的Text文件或者CSV文件是以\t作為分隔符的,每行有id,
name,
balance這麼三個數據域,那麼首先我們需要在資料庫中創建這個表:
CREATE
TABLE
sometable(id
INT,
name
VARCHAR(255),
balance
DECIMAL(8,4));
創建成功以後就可以導入了。操作方式很簡單:
LOAD
DATA
LOCAL
INFILE
‘你的文件路徑(如~/file.csv)’
INTO
TABLE
sometable
FIELDS
TERMINATED
BY
‘\t’
[ENCLOSED
BY
‘”‘(可選)]
LINES
TERMINATED
BY
‘\n’
(id,
name,
balance)
這裡要注意的是,我們需要開啟local-infile這個MySQL的配置參數,才能夠成功導入。究其原因,從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」.
怎樣將XML文件導入MYSQL
1、輸出資料庫版本變數為xml格式
Shell mysql -X -uroot -proot -e “use test; show variables like ‘%version%’;”
參數X表示生成xml格式的輸出 , 參數e表示執行後面的命令
如何將xml格式文件導入mysql中
舉例說明如下
xml文件名為: text.xml
xml數據文件的結構如下:
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;
返回數據結果就是:
name | data
abc | 123
怎麼把xml數據導入到mysql中
建議導出成CSV格式,然後打開文件,直接COPY後paste row 導入資料庫中。
原創文章,作者:DATN,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/141388.html