`

多进程插入mysql数据库

阅读更多
如何编译?
gcc -Wall -o a.out $(mysql_config --cflags) mysql_insert.c $(mysql_config --libs)
#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>
#include <sys/time.h>
#include <unistd.h>
#include <mysql/mysql.h>
#include<sys/types.h>
#include<sys/wait.h>

#define DB_HOST "127.0.0.1"
#define DB_USER "root"
#define DB_PASS ""
#define DB_NAME "test"
#define DB_PORT 3307

int main(int argc, char **argv)
{
	MYSQL mysql;

	unsigned int i;
	int rtn; /*子进程的返回数值*/
	unsigned int process_no;
	unsigned int userId;
	unsigned int type;
	unsigned int itemCate;
	unsigned int itemType;
	unsigned int itemNum;
	unsigned int totalCost;
	unsigned int consumeTime;
	unsigned int leftBalance;
	char itemName[1000] ;
	char sql[20000] ;

    struct timeval time_start,time_end;
    float execute_time;
	
    //srand(time(0));

	for(process_no = 1; process_no < 18; process_no++)
	{
		if(fork() == 0)
		{
		    // 开始执行时间
		    gettimeofday(&time_start,NULL);

			mysql_init(&mysql);

			if(!mysql_real_connect(&mysql,DB_HOST,DB_USER,DB_PASS,DB_NAME,DB_PORT,NULL,0))
			{
				fprintf(stderr, "Failed to connect to database: Error: %s\n",mysql_error(&mysql));
			}

			mysql_query(&mysql,"SET NAMES utf8");

			for(i = 0; i < 444444; i++)
			{
				sprintf(itemName,"%s","");

				userId = rand()%19071388 + 1;
				type = rand()%4 + 1;
				itemCate = rand()%15 + 1;
				itemType = rand()%100 + 1;
				itemNum = rand()%100 + 1;
				totalCost = rand()%10000 + 1;
				consumeTime = rand()%1309120853 + 1;
				leftBalance = rand()%10000 + 1;

				sprintf(sql,"insert into user_consume1(userId,type,itemCate,itemType,itemNum,totalCost,consumeTime,leftBalance,itemName)values(%d,%d,%d,%d,%d,%d,%d,%d,'')",
					userId,type,itemCate,itemType,itemNum,totalCost,consumeTime,leftBalance);

				if(mysql_query(&mysql,sql))
				{
					fprintf(stderr,"query failed:%s",mysql_error(&mysql));
				}
			}

			mysql_close(&mysql);

			// 结束执行时间
			gettimeofday(&time_end,NULL);

			execute_time = (time_end.tv_sec - time_start.tv_sec) + (time_end.tv_usec - time_start.tv_usec)/1000000;
			printf("execute time:%f\n",execute_time);

			exit(0);
		}
		else
		{
			/* 父进程, 等待子进程结束,并打印子进程的返回值 */
			//wait ( &rtn );
			//printf("child process return %d\n",rtn);
			//return 0;
			//printf("execute child process return %d\n",process_no);
		}
	}

	return 0;
}





分享到:
评论

相关推荐

    C# MySQL数据库备份还原

    C# MySQL数据库备份还原 C# MySQL数据库批量备份还原工具是使用C#语言开发的一个数据库备份还原工具,主要用于对MySQL数据库进行批量备份和还原操作。该工具使用了Process类来操作cmd.exe,调用mysqldump.exe来执行...

    mysql数据库数据备份与还原源代码

    MySQL数据库是世界上最受欢迎的关系型数据库管理系统之一,广泛应用于各种规模的企业和项目中。数据库的数据备份与还原是数据库管理中的重要环节,确保数据的安全性和可恢复性。本项目提供了一个基于Java Servlet...

    《MySQL数据库原理》PPT

    **MySQL数据库原理** MySQL是一种广泛使用的开源关系型数据库管理系统(RDBMS),它以其高效、稳定和易用性在全球范围内赢得了广大用户的喜爱。本PPT将深入探讨MySQL的基本原理、功能特性和应用实践。 1. **数据库...

    多进程爬取在线课程并存入MySQL数据库.rar

    在本项目"多进程爬取在线课程并存入MySQL数据库"中,开发者利用了这一特性来优化网络爬虫的性能,以更高效地抓取在线课程信息,并将获取的数据存储到MySQL数据库中。以下将详细讲解多进程爬取和数据库存储的相关知识...

    多进程爬取在线课程并存入MySQL数据库.zip

    在Python编程领域,多进程爬取在线课程并存入MySQL数据库是一种常见的数据获取与存储方法。这个项目涉及到了网络爬虫、多进程处理以及数据库操作等核心知识点,下面将逐一详细解析。 首先,网络爬虫是自动抓取...

    基于Python的多进程爬取在线课程并存入Mysql数据库.zip

    在本项目"基于Python的多进程爬取在线课程并存入Mysql数据库.zip"中,主要涉及了Python编程语言在Web爬虫领域的应用,以及如何将获取的数据存储到MySQL数据库中。这一综合性的任务适用于计算机科学与技术相关专业的...

    shell的多线程&当前文件夹下批量插入MySQL

    总结起来,虽然Shell本身不支持多线程,但我们可以通过FIFO文件和进程间的通信来模拟多线程行为,实现批量处理任务,例如在当前目录下批量插入MySQL数据库。这种方法在处理大量并发任务时非常有用,提高了工作效率。

    网络爬虫-多进程爬取在线课程并存入MySQL数据库-Python源码示例.zip

    该压缩包文件“网络爬虫-多进程爬取在线课程并存入MySQL数据库-Python源码示例.zip”提供了一个Python实现的网络爬虫项目,旨在通过多进程技术抓取在线课程信息,并将数据存储到MySQL数据库中。这个项目涵盖了以下几...

    Java代码 MySql导出到SqlLite

    【Java代码 MySql导出到SqlLite】是一种技术实践,它涉及到使用Java编程语言来实现一个功能,该功能能够将MySQL数据库中的数据高效地导出到SQLite数据库文件中。这一过程通常用于数据迁移、备份或者在不同环境之间...

    Python实现 多进程导入CSV数据到 MySQL

    对于这个量级的数据,用简单的单进程/单线程导入 会耗时很久,最终用了多进程的方式来实现。具体过程不赘述,记录一下几个要点: 批量插入而不是逐条插入 为了加快插入速度,先不要建索引 生产者和消费者模型,...

    搭建mysql数据库平台.ppt

    搭建MySQL数据库平台是一个重要的步骤,尤其对于任何依赖于数据库存储和处理数据的系统而言。MySQL是一种流行的开源关系型数据库管理系统,被广泛应用于各种规模的企业和项目中,因其高效、稳定和易于管理而受到青睐...

    MySQL数据库的安全机制.pdf

    MySQL数据库的安全机制是确保数据安全的关键组成部分,尤其在如今广泛应用于网络开发的环境中。MySQL作为一个多用户、多线程的关系型数据库管理系统,其安全性尤为重要。本文主要探讨了MySQL的权限系统,即如何控制...

    Python3 操作 MySQL 插入一条数据并返回主键 id的实例

    在Python3中操作MySQL数据库并插入一条数据,然后获取并返回这条...通过上述步骤,可以完整地实现使用Python3插入MySQL数据库数据并获取插入数据的主键id的功能,这对于数据库编程和数据管理都是非常重要的操作技能。

    mysql 数据库常用操作

    本文将详细介绍MySQL数据库的一些常用操作,包括如何启动和终止MySQL服务器。 MySQL服务器的启动与终止方法因操作系统和安装类型的不同而有所差异。在Windows和Unix/Linux系统上,启动MySQL可以通过直接运行守护...

    mysql数据库总结

    MySQL数据库由多个组成部分构成,包括服务器进程、客户端工具、存储引擎、数据表等。服务器进程处理客户端的请求,而客户端工具如MySQL命令行或MySQL Workbench用于与服务器交互。存储引擎负责实际的数据存储和检索...

    mysql数据库.zip

    在本文中,我们将深入探讨MySQL的核心概念、功能以及如何安装MySQL 5.7.30社区版,这是从"mysql数据库.zip"压缩包中包含的文件"mysql-installer-community-5.7.30.0.msi"。 1. **MySQL核心概念**: - **关系型...

    Linux全攻略-MySQL数据库配置与管理.pdf

    《Linux全攻略-MySQL数据库配置与管理》一书详尽阐述了如何在Linux环境中管理和配置MySQL数据库。MySQL是一个被广泛采用的关系型数据库管理系统,尤其在互联网领域,它与Linux、Apache、PHP一起构成了构建网站的常见...

    mysql数据库安装目录下的工具包.rar

    MySQL数据库是世界上最流行的开源关系型数据库管理系统之一,其在各种规模的企业、开发项目和个人应用中都有广泛的应用。在MySQL的安装目录下,有一个名为“bin”的文件夹,它包含了MySQL服务器运行以及管理所需的...

    Mysql数据库加强.doc

    MySQL数据库是广泛应用于Web开发中的关系型数据库管理系统,它的强大在于其灵活性、高效性和易用性。本文档主要涵盖了MySQL数据库的基础知识、操作技巧以及PHP与MySQL的交互,旨在提升数据库管理和应用能力。 1. **...

Global site tag (gtag.js) - Google Analytics