Csv和mysql_mysql2csv 和 csv2mysql 工具

mysql2csv 和 csv2mysql 工具

在这里提供了两个使用 .csv 格式 的简单的 MySQL 数据库的导数据工具。csv 格式可以很容易地生成和解析,而且,也可以很容易地使用办公软件把 .csv 格式转换为 .xls/.xlsx 格式,或者把 .xls/.xlsx 格式转换为 .csv 格式的文件。

mysql2csv - 将 MySQL 的数据导出为 csv 格式的文件。

csv2mysql - 将 csv 格式的文件的数据导入到 MySQL 数据库。

编译代码

在编译代码之前,如果你用的是 yum,那么请先确定软件包 mysql-devel 已经安装在你的系统中,才能使用 mysql 的头文件 mysql/mysql.h ,以及和库文件 libmysqlclient.a 或者 libmysqlclient.so。

使用下面的两行命令一编译这两个工具:

g++ mysql2csv.cpp -omysql2csv -g -L/usr/lib64/mysql/ -lmysqlclient

g++ csv2mysql.cpp -ocsv2mysql -g -L/usr/lib64/mysql/ -lmysqlclient

演示

首先,创建一个测试用的数据库,建立初始的数据:

[roxma@VM_6_207_centos mysql2csv]$ mysql -uroot --password="" --default-character-set=utf8

...

mysql> create database csv_test default charset=utf8;

Query OK, 1 row affected (0.02 sec)

mysql> use csv_test;

Database changed

mysql> create table test(id int primary key, value1 varchar(1024))engine=innodb;

Query OK, 0 rows affected (0.08 sec)

mysql> show create table test \G

*************************** 1. row ***************************

Table: test

Create Table: CREATE TABLE `test` (

`id` int(11) NOT NULL,

`value1` varchar(1024) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8

1 row in set (0.00 sec)

mysql> insert into test (id,value1) values(1,"hello"),(2, 'comma , double quotes " '),(3,NULL);

Query OK, 3 rows affected (0.00 sec)

Records: 3 Duplicates: 0 Warnings: 0

mysql> select * from test;

+----+--------------------------+

| id | value1 |

+----+--------------------------+

| 1 | hello |

| 2 | comma , double quotes " |

| 3 | NULL |

+----+--------------------------+

3 rows in set (0.00 sec)

导出 MySQL 的数据到 .csv 文件:

[roxma@VM_6_207_centos mysql2csv]$ ./mysql2csv host="127.0.0.1" port="3306" db="csv_test" user="root" passwd="" charset="utf8" execute="select * from test" > data.csv

host=127.0.0.1

port=3306

db=csv_test

user=root

passwd=

charset=utf8

execute=select * from test

[roxma@VM_6_207_centos mysql2csv]$ cat data.csv

id,value1

1,hello

2,"comma , double quotes "" "

3,NULL

导入 .csv 文件的数据到 MySQL:

[roxma@VM_6_207_centos mysql2csv]$ ./csv2mysql host="127.0.0.1" port="3306" db="csv_test" user="root" passwd="" charset="utf8" execute="insert into test set id=?id+3, value1=?value1" input="data.csv"

host=127.0.0.1

port=3306

db=csv_test

user=root

passwd=

charset=utf8

execute=insert into test set id=?id+3, value1=?value1

input=data.csv

3 rows executed.

[roxma@VM_6_207_centos mysql2csv]$ mysql -uroot --password="" --default-character-set=utf8 --database="csv_test" -e"select * from test"

+----+--------------------------+

| id | value1 |

+----+--------------------------+

| 1 | hello |

| 2 | comma , double quotes " |

| 3 | NULL |

| 4 | hello |

| 5 | comma , double quotes " |

| 6 | NULL |

+----+--------------------------+

支持的工具选项

通用选项host MySQL server 的机器名 127.0.0.1port MySQL 连接的目标端口 3306user MySQL 用户名 rootpasswd MySQL 用户的密码 charset MySQL 连续使用的字符编码 utf8db 使用的 MySQL 数据库名。相当于 use db 命令。 mysql2csv 选项execute 需要执行的 MySQL 查询命令 null_cell_value 当对应的值NULL时,使用这个字符串替换到表格中。 NULLoutput 生成的 csv 文件的文件名。如果这个选项为空,则文件 的内容会被输出到 stdout。 csv2mysql 选项execute 需要执行的 MySQL 指令 warning_as_error 如果为个选项为1,那么在执行 MySQL 语句的过程中如果出现任何 warning,都会被视为错误,程序直接终止退出。 1input 输入的 csv 文件的文件名。如果这个选项为空,则程序从 stdin 中读取数据。 选项 描述 默认值

代码下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值