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 |
+----+--------------------------+

支持的工具选项

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

代码下载

https://github.com/roxma/cpp_learn/tree/master/tools/mysql2csv

mysql2csv 和 csv2mysql 工具的更多相关文章

  1. Unity3d入门 - 关于unity工具的熟悉

    上周由于工作内容较多,花在unity上学习的时间不多,但总归还是学习了一些东西,内容如下: .1 根据相关的教程在mac上安装了unity. .2 学习了unity的主要的工具分布和对应工具的相关的功 ...

  2. 细说前端自动化打包工具--webpack

    背景 记得2004年的时候,互联网开发就是做网页,那时也没有前端和后端的区分,有时一个网站就是一些纯静态的html,通过链接组织在一起.用过Dreamweaver的都知道,做网页就像用word编辑文档 ...

  3. 应用工具 .NET Portability Analyzer 分析迁移dotnet core

    大多数开发人员更喜欢一次性编写好业务逻辑代码,以后再重用这些代码.与构建不同的应用以面向多个平台相比,这种方法更加容易.如果您创建与 .NET Core 兼容的.NET 标准库,那么现在比以往任何时候 ...

  4. .NetCore中的日志(2)集成第三方日志工具

    .NetCore中的日志(2)集成第三方日志工具 0x00 在.NetCore的Logging组件中集成NLog 上一篇讨论了.NetCore中日志框架的结构,这一篇讨论一下.NetCore的Logg ...

  5. dll文件32位64位检测工具以及Windows文件夹SysWow64的坑

    自从操作系统升级到64位以后,就要不断的需要面对32位.64位的问题.相信有很多人并不是很清楚32位程序与64位程序的区别,以及Program Files (x86),Program Files的区别 ...

  6. Java基础Map接口+Collections工具类

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

  7. 渗透测试工具BurpSuite做网站的安全测试(基础版)

    渗透测试工具BurpSuite做网站的安全测试(基础版) 版权声明:本文为博主原创文章,未经博主允许不得转载. 学习网址: https://t0data.gitbooks.io/burpsuite/c ...

  8. CorelDRAW X8 如何破解激活(附国际版安装包+激活工具) 2016-12-15

    之前有位搞平面的好友“小瘦”说CDR X8无法破解,只能用X7.呃……呃……呃……好像是的 其实CDR8难激活主要在于一个点“没有离线激活了,只可以在线激活”,逆天不是专供逆向的,当然没能力去破解,这 ...

  9. Web Api 入门实战 (快速入门+工具使用+不依赖IIS)

    平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo ...

随机推荐

  1. bzoj1497

    这道题让我涨姿势了 对于这类问题,我们称作最大权闭合图问题 就是每个点都有一个点权,要求选择一个点集,其中每个点的指向的点也在点集中,使这样一个点权和最大 对于这种问题,我们添加源点s,汇点t 对于点 ...

  2. bzoj2208

    首先有向图的题目不难想到先tarjan缩点 一个强连通分量中的点的连通数显然是相等: 据说这样直接dfs就可以过了,但显然不够精益求精 万一给定的是一个完全的DAG图怎么办,dfs铁定超时: 首先想, ...

  3. 百万程序员的苦恼-选择VB.NET还是C#

    在过去的一年中,互联网上的各大讨论区或者电子邮件的讨论列表都对微软的VB.NET以及C#的各种优越性做了探讨.这些讨论围绕的主要问题就是,我应该先学哪一个,VB.NET还是C#?? 我写这篇文章的目的 ...

  4. Linux kernel ‘xfs_attrlist_by_handle()’函数缓冲区溢出漏洞

    漏洞名称: Linux kernel ‘xfs_attrlist_by_handle()’函数缓冲区溢出漏洞 CNNVD编号: CNNVD-201311-392 发布时间: 2013-11-29 更新 ...

  5. MS dos版本

    1981年,MS-DOS 1.0发行,作为IBM PC的操作系统进行捆绑发售,支持16k内存及160k的5寸软盘.在硬件昂贵,操作系统基本属于送硬件奉送的年代,谁也没能想到,微软公司竟会从这个不起眼的 ...

  6. MVC 3.0 在各个版本IIS中的部署

    概述: 最近在做一个MVC 3的项目,在部署服务器时破费了一番功夫,特将过程整理下来,希望可以帮到大家! 本文主要介绍在IIS5.1.IIS6.0.IIS7.5中安装配置MVC 3的具体办法! 正文: ...

  7. 在Eclipse中使用Github(EGit)

    安装配置EGit 1. 安装Windows版的Git,登陆Github账号,登陆成功后会自动在本地和Github配置好密钥 2. 在Eclipse中安装EGit,地址http://download.e ...

  8. SAE网站搭建(2)

    通过djangao admin界面无法添加汉字(unicode)的解决办法. 根源:mysql服务器的默认设置不支持unicode(utf8) 解决办法: 将/etc/mysql/my.cnf中utf ...

  9. 关于 unity5.3.1 录制 animation 带有 rotation 信息打包 Android 会运动错乱的问题

         Unity5.3.1 录制 animation 带有 rotation 信息打包 Android 会运动错乱的问题 ,临时解决方法是:在动画面板中点击 rotation 属性,右键选择菜单中 ...

  10. 【JS】Intermediate1:The DOM

    1.DOM(The Document Object Model) A way to manipulate the structure and style of an HTML page. It rep ...