怎么把csv文件导入数据库中

怎么把csv文件导入数据库中,第1张

将CSV文件导入数据库的方法有很多种,可以使用脚本、数据库客户端或者数据库提供的管理功能来实现。比如可以在MySQL中使用LOAD DATA INFILE命令,在SQL Server中使用BCP命令,在Oracle中使用SQLLoader等。
拓展:另外,还可以使用编程语言,比如Java或者Python,开发一个专门的程序来实现csv文件数据表之间的转换。

将外部数据导入(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
'你的文件路径(如~/filecsv)'
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
616,
“Security
Issues
with
LOAD
DATA
LOCAL”

数据太大,用数据库客户端软件直接导入非常卡,还是直接执行SQL吧。
1、指定文件路径。
2、字段之间以逗号分隔,数据行之间以\r\n分隔(我这里文件是以\n分隔的)。
3、字符串以半角双引号包围,字符串本身的双引号用两个双引号表示。
Sql代码
复制代码 代码如下:
load data infile 'D:\\top-1mcsv'
into table `site`
fields terminated by ',' optionally enclosed by '"' escaped by '"'
lines terminated by '\n';
顺带也备份个导出吧。
Sql代码
复制代码 代码如下:
select from `site`
into outfile 'D:\\top-1mcsv'
fields terminated by ',' optionally enclosed by '"' escaped by '"'
lines terminated by '\n';


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

原文地址: http://outofmemory.cn/yw/13334962.html

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

发表评论

登录后才能评论

评论列表(0条)

保存