重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
用shell脚本通过while循环批量生成mysql测试数据的方法。
创新互联公司是一家网站设计公司,集创意、互联网应用、软件技术为一体的创意网站建设服务商,主营产品:成都响应式网站建设、品牌网站制作、成都全网营销推广。我们专注企业品牌在网站中的整体树立,网络互动的体验,以及在手机等移动端的优质呈现。成都网站设计、成都网站制作、移动互联产品、网络运营、VI设计、云产品.运维为核心业务。为用户提供一站式解决方案,我们深知市场的竞争激烈,认真对待每位客户,为客户提供赏析悦目的作品,网站的价值服务。
1、很多时候需要在mysql表中插入大量测试数据,下面分享一个用shell脚本通过while循环批量生成mysql测试数据的方法,你只需要根据你自己的表结构来生成sql语句即可。
复制代码代码如下:
#!/bin/bash
i=1;
MAX_INSERT_ROW_COUNT=$1;
while [ $i -le $MAX_INSERT_ROW_COUNT ]
do
mysql -uroot -proot afs -e "insert into afs_test (name,age,createTime) values ('HELLO$i',$i % 99,NOW());"
d=$(date +%M-%d\ %H\:%m\:%S)
echo "INSERT HELLO $i @@ $d"
i=$(($i+1))
sleep 0.05
done
exit 0
2、假定上面的shell脚本保存为create-data.sh,可以通过下面的命令来生成数据:
复制代码代码如下:sh create-data.sh 10000。(参数10000是要生成的数据条数。)
mysql向数据库中添加数据
一、添加MySQL数据库1.点击“数据库(MySQLDatabases)”,进入到数据库设置界面: 2.在“生成新的数据库”下输入数据库名,然后点击“生成数据库”按钮: 3.数据库已经添加,点击 “回到/返回”,回到数据库设置页面: 二、添加MySQL用户 1.在添加新用户下,填写用户名和密码,最后点击“生成用户”: 2.MySQL用户添加成功,点击“返回”回到数据库设置页面: 三、关联MySQL数据库和用户 1.在“向数据库添加用户”下,选择刚才添加的MySQL数据库和用户,点击“添加”: 2.勾选MySQL用户的权限,一般都是我们自己使用,建议全选,点击更改: 3.MySQL数据库和用户关联成功 ,点击“返回”回到数据库设置页面: 4.此时在“当前数据库”就可以看到关联号的MySQL数据库和用户: 到这里为止,cPanel成功添加了MySQL数据库,本文演示创建的数据库信息如下: 服务器一般为 7640 向mysql数据库中插入数据时显示“Duplicate entry 1′ for key ‘PRIMARY ”错误 在一张数据表中是不能同时出现多个相同主键的数据的 这就是错误的原因,解决的方法: 1.可以将这张表设置成无主键(mysql支持,其他不清楚)不推荐使用这种方法,一般数据表都是需要有主键的。 2.可以设置一个自增的id号作为主键,其余数据就可以相同了!
MySQL数据库的导入,有两种方法:
1) 先导出数据库SQL脚本,再导入;
2) 直接拷贝数据库目录和文件。
在不同操作系统或MySQL版本情况下,直接拷贝文件的方法可能会有不兼容的情况发生。
所以一般推荐用SQL脚本形式导入。下面分别介绍两种方法。
2. 方法一 SQL脚本形式
操作步骤如下:
2.1. 导出SQL脚本
在原数据库服务器上,可以用phpMyAdmin工具,或者mysqldump命令行,导出SQL脚本。
2.1.1 用phpMyAdmin工具
导出选项中,选择导出“结构”和“数据”,不要添加“DROP DATABASE”和“DROP TABLE”选项。
选中“另存为文件”选项,如果数据比较多,可以选中“gzipped”选项。
将导出的SQL文件保存下来。
2.1.2 用mysqldump命令行
命令格式
mysqldump -u用户名 -p 数据库名 数据库名.sql
范例:
mysqldump -uroot -p abc abc.sql
(导出数据库abc到abc.sql文件)
提示输入密码时,输入该数据库用户名的密码。
2.2. 创建空的数据库
通过主控界面/控制面板,创建一个数据库。假设数据库名为abc,数据库全权用户为abc_f。
2.3. 将SQL脚本导入执行
同样是两种方法,一种用phpMyAdmin(mysql数据库管理)工具,或者mysql命令行。
2.3.1 用phpMyAdmin工具
从控制面板,选择创建的空数据库,点“管理”,进入管理工具页面。
在"SQL"菜单中,浏览选择刚才导出的SQL文件,点击“执行”以上载并执行。
注意:phpMyAdmin对上载的文件大小有限制,php本身对上载文件大小也有限制,如果原始sql文件
比较大,可以先用gzip对它进行压缩,对于sql文件这样的文本文件,可获得1:5或更高的压缩率。
gzip使用方法:
# gzip xxxxx.sql
得到
xxxxx.sql.gz文件。
提示输入密码时,输入该数据库用户名的密码。
3 直接拷贝
如果数据库比较大,可以考虑用直接拷贝的方法,但不同版本和操作系统之间可能不兼容,要慎用。
3.1 准备原始文件
用tar打包为一个文件
3.2 创建空数据库
3.3 解压
在临时目录中解压,如:
cd /tmp
tar zxf mydb.tar.gz
3.4 拷贝
将解压后的数据库文件拷贝到相关目录
cd mydb/
cp * /var/lib/mysql/mydb/
对于FreeBSD:
cp * /var/db/mysql/mydb/
3.5 权限设置
将拷贝过去的文件的属主改为mysql:mysql,权限改为660
chown mysql:mysql /var/lib/mysql/mydb/*
chmod 660 /var/lib/mysql/mydb/*
mysql如何添加数据
举例如下:
//建立一个表
create table tab_nam(
age int,
name char(10)
)
//往里插入数据
insert into tab_nam(age,name) values(11,'aaa')
insert into tab_nam(age,name) values(22,'bbb')
......
当你建好了数据库及表时 你首先想到的就是向数据库的表中输入数据 这就牵涉到如何向数据库增加数据 下面我们就来探讨一下这个问题: 一般我们常用的方法是insert语句(这里假定各位的版本都不是很低) 她有以下几种形式:insert into tablename values(value value )insert into tablename(fieldname fieldname ) values(value value )insert into tablename set fieldname =value fieldname =value insert into tablename(fieldname fieldname ) select fieldname fieldname from tablename 以上基本上罗列了用insert插入数据的方法 当然你也可以用insert语句将几行同时插入到一个表中 如下所示:insert into tablename values( ) ( ) 在mysql运行环境下 我们还可以用LOAD DATA 语句把文件里面的数据读取录入到表里面 一般来讲 因为此文件是由服务器在主机上直接读取的 所以你必须具有file权限且文件必须是完全可读 当你版本够新的话 你可以给出local 这样由于你是从客户机上读取该文件并将内容传送到服务器 你就不需要file权限 如果你没有给出local 则服务器按如下方法对其进行定位: )如果你的filename为绝对路径 则服务器从根目录开始查找该文件 )如果你的filename为相对路径 则服务器从数据库的数据目录中开始查找该文件 如果你给出了local 则文件将按以下方式进行定位: )如果你的filename为绝对路径 则客户机从根目录开始查找该文件 )如果你的filename为相对路径 则客户机从当前目录开始查找该文件 说了半天 也许你还不明白这具体的格式 看下面先:LOAD DATA [LOCAL] INFILE filename into table tablename import_options [(fieldname_list)]import options的语法为:fieldsterminated by char enclosed by char escaped by char linesterminated by string 下面我们对其进行一些说明: )fields terminated by char 指定分隔列的字符.缺省时假定列值由制表符分隔. )fields enclosed by char 指明列值应包括在指定的字符中.通常用引号.缺省时 假定列值不包括在任何字符中. )fields escaped by char 表示用于转义特殊字符的转义符.缺省时表示无转义符 )lindes escaped by string 指定结束输入行的串(可以是多字符的).缺省时假定由换行符终止行需要注意的是转义字符的使用 如:\ 表示单引号 \ 表示双引号 等等 另外还有一些选项这里没有具体谈到 如 ignore n lines 她可以控制文件的前n行不被读入数据库 详细请看mysql中文参考 说了上面这么多 给一行命令大家具体体会一下:load data [local] infile sample txt into table sample fields terminated by enclosed by \ 在系统命令行下你可以用mysqlimport实用程序 她将文本文件的内容读取到已有表中(其实mysqlimport起的作用就是实现load data命令行的接口) 调用完mysqlimport后她生成一个load data 语句 语法基本上和load data差不多:mysqlimport [options] sample_db filename同样 给条命令看一下吧:mysqlimport Cu root [ local] Cfields terminated by= fields enclosed by= \ samp_db samp_table txt(REMARK:此语句中samp_db为指定的数据库 要录入数据的表由文件名参数确定 文件名去掉其任何扩展名 留下的就是表名 所以此语句中录入数据的表名为samp_table 也就是说在执行这条语句时首先应该肯定表samp_table存在 另外如果你有多个文件需要装入同一个表里 你可以用samp_table n txt来处理) lishixinzhi/Article/program/MySQL/201311/29349