文档章节

linux(ubuntu) mysql 内容导出到配置文件

菅超鹏
 菅超鹏
发布于 2014/06/11 22:22
字数 244
阅读 24
收藏 0

1. 把一个数据库中的所有表的所有数据导出成配置文件(这是一个粗略的版本,其中数据都是导出成字符串的,有待完善)

#include <iostream>
#include <string>
#include <vector>
#include <mysql/mysql.h>
#include "json/json.h"
#include <fstream>

using namespace std;

int main(int argc, char* argv[])
{
	MYSQL mysql;
	mysql_init( &mysql );

	mysql_real_connect(
		&mysql,
		"192.168.16.114",
		"root",
		"root",
		"test",
		3306,
		NULL,
		0
	);

	string sql = "show tables;";
	mysql_query( &mysql, sql.c_str() );
	
	MYSQL_RES *result = NULL;
	result = mysql_store_result( &mysql );
	
	vector<string> tables;
	MYSQL_ROW row = NULL;
	//得到所有的表
	row = mysql_fetch_row( result );
	while ( NULL != row )
	{
		tables.push_back( row[0] );
		cout << row[0] << endl;
		row = mysql_fetch_row( result );
	}

	for(vector<string>::const_iterator cit = tables.begin(); cit != tables.end(); ++ cit)
	{
		sql = "select * from " + *cit;
		mysql_query( &mysql, sql.c_str() );
		
		cout << sql << endl;
		//得到表中列的数量
		result = mysql_store_result( &mysql );
	
		MYSQL_FIELD* field = NULL;
		
		ofstream os;
		string tableName = *cit + ".json";
		os.open( tableName.c_str() );

		Json::Value jsonTable;
		MYSQL_ROW row1 = mysql_fetch_row( result );
		int field_count = mysql_num_fields( result );
		while ( NULL != row1 )
		{
			Json::Value jsonRow;
			for(int i = 0; i < field_count; ++i)
			{
				field = mysql_fetch_field_direct( result, i );
				/*
				switch(field->type)	
				{
				case MYSQL_TYPE_TINY:
					cout << "MYSQL_TYPE_TINY" << endl;
					break;
				case MYSQL_TYPE_SHORT:
					cout << "MYSQL_TYPE_SHORT" << endl;

				}
				*/
				jsonRow[field->name] = Json::Value(row1[i]);
			}	
			row1 = mysql_fetch_row( result );
			cout << *cit << endl;
			
			jsonTable.append(jsonRow);
		}
		
		
		os << jsonTable;
		os << flush;
		os.close();
	}
	
	return 0;
}



© 著作权归作者所有

共有 人打赏支持
菅超鹏
粉丝 0
博文 10
码字总数 2856
作品 0
广州
程序员
私信 提问
Linux服务及安全管理第十周作业【Linux微职位】

1、建立samba共享,共享目录为/data,要求:(描述完整的过程) 1)共享名为shared,工作组为magedu; 2)添加组develop,添加用户gentoo,centos和ubuntu,其中gentoo和centos以develop为附加组...

akatsuki1023
06/29
0
0
使用docker虚拟化技术,lamp架构,搭建wordpress博客服务

使用docker虚拟化技术,lamp架构,搭建wordpress博客服务 使用平台 Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-91-generic x86_64) 搭建思路步骤 需求:使用wprdpress搭建一个私人博客,并且将服务...

fsx2550553488
05/28
0
0
怎样将 MySQL 迁移到 MariaDB 上

自从甲骨文收购 MySQL 后,由于甲骨文对 MySQL 的开发和维护更多倾向于闭门的立场,很多 MySQL 的开发者和用户放弃了它。在社区驱动下,促使更多人移到 MySQL 的另一个叫 MariaDB 的分支,在...

linuxprobe16
2016/12/04
20
0
实现远程连接 Win10的Ubuntu子系统下的MySQL数据库

实现远程连接 Win10的Ubuntu子系统下的MySQL数据库 1. Ubuntu系统下安装MySQL数据库 2. 登陆数据库,创建用于远程连接的用户 注:表示所有的电脑都可以连接,也可以设置某个ip地址运行连接。...

优惠码优惠
07/03
0
0
深入分析Docker镜像原理(上)

第一部分:Docker镜像的基本知识 1.1 什么是Docker镜像 从整体的角度来讲,一个完整的Docker镜像可以支撑一个Docker容器的运行,在 Docker容器运行过程中主要提供文件系统视角。例如一个ubu...

苏宁公有云
2015/08/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周三乱弹 —— 有一天考拉麻麻拉肚子了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @瘟神灬念 :分享周汇洋的单曲《Man Srae(曼斯拉之舞)》:美滋滋。。。。 手机党少年们想听歌,请使劲儿戳(这里) 我听了一下 赶紧关了, ...

小小编辑
47分钟前
17
4
oh-my-zsh 自定义

GitHub 地址 基于 oh-my-zsh 的自定义配置,增加了一些个人常用插件与皮肤。 采用的是 git submodule 来维护,包括 oh-my-zsh,之所以这么搞,主要是手头有多台 linux 需要维护, 每台机器、...

郁也风
今天
6
0
Docker安装踩坑:E_FAIL 0x80004005的解决

参考 菜鸟教程--Windows Docker 安装 http://www.runoob.com/docker/windows-docker-install.html 官方文档-Install Docker Toolbox on Windows https://docs.docker.com/toolbox/toolbox_in......

karma123
今天
6
0
js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为“...

Jack088
昨天
18
0
大数据教程(10.1)倒排索引建立

前面博主介绍了sql中join功能的大数据实现,本节将继续为小伙伴们分享倒排索引的建立。 一、需求 在很多项目中,我们需要对我们的文档建立索引(如:论坛帖子);我们需要记录某个词在各个文...

em_aaron
昨天
27
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部