您的位置:首页 > 数据库 > MySQL

学习 MySQL中导入 导出CSV

2014-11-16 23:30 183 查看
学习 MySQL中导入 导出CSV

MySQL中导出CSV格式数据的SQL语句样本如下:

Sql代码





select * from test_info

into outfile '/tmp/test.csv'

fields terminated by ',' optionally enclosed by '"' escaped by '"'

lines terminated by '\r\n';

[sql] view
plaincopy

select * from test_info

into outfile '/tmp/test.csv'

fields terminated by ',' optionally enclosed by '"' escaped by '"'

lines terminated by '\r\n';

MySQL中导入CSV格式数据的SQL语句样本如下:

Sql代码





load data infile '/tmp/test.csv'

into table test_info

fields terminated by ',' optionally enclosed by '"' escaped by '"'

lines terminated by '\r\n';

[sql] view
plaincopy

load data infile '/tmp/test.csv'

into table test_info

fields terminated by ',' optionally enclosed by '"' escaped by '"'

lines terminated by '\r\n';

里面最关键的部分就是格式参数

Sql代码





fields terminated by ',' optionally enclosed by '"' escaped by '"'

lines terminated by '\r\n'

[sql] view
plaincopy

fields terminated by ',' optionally enclosed by '"' escaped by '"'

lines terminated by '\r\n'

这个参数是根据RFC4180文档设置的,该文档全称Common Format and MIME Type for Comma-Separated Values (CSV) Files,其中详细描述了CSV格式,其要点包括:

(1)字段之间以逗号分隔,数据行之间以\r\n分隔;

(2)字符串以半角双引号包围,字符串本身的双引号用两个双引号表示。

文件:test_csv.sql

Sql代码





use test;

create table test_info (

id integer not null,

content varchar(64) not null,

primary key (id)

);

delete from test_info;

insert into test_info values (2010, 'hello, line

suped

seped

"

end'

);

select * from test_info;

select * from test_info into outfile '/tmp/test.csv' fields terminated by ',' optionally enclosed by '"' escaped by '"' lines terminated by '\r\n';

delete from test_info;

load data infile '/tmp/test.csv' into table test_info fields terminated by ',' optionally enclosed by '"' escaped by '"' lines terminated by '\r\n';

select * from test_info;

[sql] view
plaincopy

use test;

create table test_info (

id integer not null,

content varchar(64) not null,

primary key (id)

);

delete from test_info;

insert into test_info values (2010, 'hello, line

suped

seped

"

end'

);

select * from test_info;

select * from test_info into outfile '/tmp/test.csv' fields terminated by ',' optionally enclosed by '"' escaped by '"' lines terminated by '\r\n';

delete from test_info;

load data infile '/tmp/test.csv' into table test_info fields terminated by ',' optionally enclosed by '"' escaped by '"' lines terminated by '\r\n';

select * from test_info;

文件:test.csv

Text代码





2010,"hello, line

suped

seped

""

end"

[Text] view
plaincopy

2010,"hello, line

suped

seped

""

end"

在Linux下如果经常要进行这样的导入导出操作,当然最好与Shell脚本结合起来,为了避免每次都要写格式参数,可以把这个串保存在变量中,如下所示:(文件mysql.sh)

Bash代码





#!/bin/sh

# Copyright (c) 2010 codingstandards. All rights reserved.

# file: mysql.sh

# description: Bash中操作MySQL数据库

# license: LGPL

# author: codingstandards

# email: codingstandards@gmail.com

# version: 1.0

# date: 2010.02.28

# MySQL中导入导出数据时,使用CSV格式时的命令行参数

# 在导出数据时使用:select ... from ... [where ...] into outfile '/tmp/data.csv' $MYSQL_CSV_FORMAT;

# 在导入数据时使用:load data infile '/tmp/data.csv' into table ... $MYSQL_CSV_FORMAT;

# CSV标准文档:RFC 4180

MYSQL_CSV_FORMAT="fields terminated by ',' optionally enclosed by '\"' escaped by '\"' lines terminated by '\r\n'"

使用示例如下:(文件test_mysql_csv.sh)

Bash代码





#!/bin/sh

. /opt/shtools/commons/mysql.sh

# MYSQL_CSV_FORMAT="fields terminated by ',' optionally enclosed by '\"' escaped by '\"' lines terminated by '\r\n'"

echo "MYSQL_CSV_FORMAT=$MYSQL_CSV_FORMAT"

rm /tmp/test.csv

mysql -p --default-character-set=gbk -t --verbose test <<EOF

use test;

create table if not exists test_info (

id integer not null,

content varchar(64) not null,

primary key (id)

);

delete from test_info;

insert into test_info values (2010, 'hello, line

suped

seped

"

end'

);

select * from test_info;

-- select * from test_info into outfile '/tmp/test.csv' fields terminated by ',' optionally enclosed by '"' escaped by '"' lines terminated by '\r\n';

select * from test_info into outfile '/tmp/test.csv' $MYSQL_CSV_FORMAT;

delete from test_info;

-- load data infile '/tmp/test.csv' into table test_info fields terminated by ',' optionally enclosed by '"' escaped by '"' lines terminated by '\r\n';

load data infile '/tmp/test.csv' into table test_info $MYSQL_CSV_FORMAT;

select * from test_info;

EOF

echo "===== content in /tmp/test.csv ====="

cat /tmp/test.csv

本文链接:http://blog.csdn.net/kongxx/article/details/7051439

MySQL自己提供了导入导出数据库的工具,但有时我们需要仅仅导入导出单个表的数据,比如导入导出CSV文件,此时可以使用MySQL自动的命令来做导入导出工作。

导出语法如下:

[plain] view
plaincopyprint?

SELECT * FROM INTO OUTFILE '[FILE]';

或者

SELECT * FROM
INTO OUTFILE '[FILE]'

FIELDS TERMINATED BY ','

OPTIONALLY ENCLOSED BY '"'

LINES TERMINATED BY '\n';

下边是一个具体的导出的例子:

[plain] view
plaincopyprint?

SELECT * FROM mytable

INTO OUTFILE '/tmp/mytable.csv'

FIELDS TERMINATED BY ','

OPTIONALLY ENCLOSED BY '"'

LINES TERMINATED BY '\n';

导入语法如下:

[plain] view
plaincopyprint?

LOAD DATA INFILE '[FILE]'

INTO TABLE


或者

LOAD DATA INFILE '[FILE]'

INTO TABLE
FIELDS TERMINATED BY ','

OPTIONALLY ENCLOSED BY '"'

LINES TERMINATED BY '\n';

下边是一个具体的导入的例子:

[plain] view
plaincopyprint?

LOAD DATA INFILE '/tmp/mytable.csv'

INTO TABLE mytable

FIELDS TERMINATED BY ','

OPTIONALLY ENCLOSED BY '"'

LINES TERMINATED BY '\n';
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: