`

Bash中使用MySQL导入导出CSV格式数据

阅读更多

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

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语句样本如下:

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

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

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

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

2010,"hello, line
suped
seped
""
end"

 

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

#!/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)

#!/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

 

 

5
0
分享到:
评论

相关推荐

    MySQL数据导入与导出

    在数据库管理与维护中,数据的导入与导出是一项基本而重要的操作,尤其在MySQL这种广泛使用的数据库系统中。本文将深入探讨MySQL数据导入与导出的方法,通过实际案例解析,帮助读者快速掌握相关技巧。 #### 数据...

    MySql数据导入导出

    - **REPLACE** 或 **IGNORE**:用于处理导入数据时与表中已有数据的冲突情况。 - **FIELDS** 和 **LINES**:用于定义文件中字段和行的分隔符等细节。 - **应用场景**: - **大数据量导入**:当需要导入大量数据...

    MySql示例9:表数据的导出和导入.zip

    当你有已导出的数据文件,如`employees.sql`,可以使用`mysql`命令行客户端将其导入到新的数据库或表中: ```bash mysql -u [username] -p[password] database_name ``` 如果数据是以CSV或其他文本格式存在,如`...

    mysql命令行导入导出

    使用`LOAD DATA INFILE`语句可以从`.csv`文件快速导入数据。例如: ```sql LOAD DATA INFILE 'data.csv' INTO TABLE tablename FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS...

    将csv文件导入/导出mySQL

    这里我们关注的是如何将CSV(逗号分隔值)文件导入到MySQL数据库以及从MySQL导出数据到CSV文件。CSV文件是一种常见的数据交换格式,适用于不同系统和应用之间的数据传输。在本教程中,我们将讨论如何利用Python的...

    mysql导出csv&&iconv;文件转码.pdf

    在当今数据处理领域,将数据从数据库导出到CSV文件并进行转码是一种常见的需求,特别是在使用MySQL数据库时。本内容将详细介绍如何使用mysql命令行工具导出数据为CSV格式,并结合iconv命令行工具进行编码转换。同时...

    MySQL 导出数据为csv格式的方法

    MySQL 导出数据为CSV格式是数据库管理中常见的任务,特别是在数据分析、报表生成或系统迁移时。以下将详细讲解三种常见的导出方法及其注意事项。 1. **使用`INTO OUTFILE`命令** 这是一种直接在SQL语句中完成导出...

    mysql数据导出共4页.pdf.zip

    五、导出数据格式 除了默认的SQL格式,`mysqldump`还可以导出为其他格式,如CSV(用于Excel或其他电子表格软件): ```bash mysqldump -t mydatabase mytable --fields-terminated-by=',' --lines-terminated-by='\...

    MySQL数据导入导出方法与工具mysqlimport.docx

    `mysqlimport`工具位于MySQL安装目录的`bin`子目录下,它允许用户将逗号分隔值(CSV)、制表符分隔值(TSV)或其他格式的文本文件快速批量导入到数据库的指定表中。在使用`mysqlimport`之前,确保你的MySQL服务正在...

    MySQL数据导入导出方法知识.pdf

    `LOAD DATA INFILE`命令是另一种快速导入数据到MySQL的方法,它允许直接从文件中加载数据到表中。在命令行中,你可以这样使用: ```sql USE Meet_A_Geek; LOAD DATA INFILE "/home/mark/data.sql" INTO TABLE ...

    MySQL数据导入导出方法与工具mysqlimport.pdf

    MySQL 数据导入导出是数据库管理中的重要操作,用于数据迁移、备份或数据分析。在MySQL中,`mysqlimport`是一个高效且便捷的命令行工具,它允许用户快速将文本文件中的数据导入到数据库的指定表中。本文将详细介绍`...

    mysql导入sql或excel文件

    要将Excel文件中的数据导入到MySQL数据库中,一般需要先将Excel转换为MySQL能够识别的格式,如CSV或TXT文件,然后再使用`LOAD DATA INFILE`命令进行导入。 ##### 将Excel转换为CSV或TXT文件 假设Excel文件中包含了...

    用SELECT… INTO OUTFILE语句导出MySQL数据的教程

    例如,导出CSV格式的数据: ```sql SELECT * FROM tutorials_tbl INTO OUTFILE '/tmp/tutorials.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n'; ``` 4. **权限要求**: ...

    Docker容器中Mysql数据的导入/导出详解

    如果需要导出CSV格式的数据,可以使用如下命令: ```bash mysql -u 用户名 --password=密码 --database=数据库名 --execute='SELECT `FIELD`, `FIELD` FROM `TABLE` LIMIT 0, 10000 ' -X &gt; 保存文件.sql ``` 这里...

    Mysql数据库导入命令Source详解.docx

    在导入数据前,你可能需要先登录到 MySQL 服务器,使用 `mysql -u username -p` 命令,然后输入你的密码。确保你有足够的权限执行 `SOURCE` 命令和操作相关的数据库。 `mysqldump` 是一个用于备份和导出 MySQL ...

Global site tag (gtag.js) - Google Analytics