(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”.
如何将 JSON,Text,XML,CSV 数据文件导入 MySQL可以使用load命令,先处理数据内容,保存为txt文件(文件格式为:字段之间用','分隔,每一行用'\n'结尾即换行符(回车)结尾)
LOAD DATA INFILE "路径/data.txt" INTO TABLE my_table FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'上述语句意思为:
将data.txt文件导入到my_table 中,约定字段分隔符为',',行分隔符为'\n'
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)