一、添加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号作为主键,其余数据就可以相同了!
用shell脚本通过while循环批量生成mysql测试数据的方法。
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是要生成的数据条数。)
import_table(importTable) 的延申功能:可定制化行输入。
import_table(importTable) 我们之前有介绍过,是一款并行导入各种格式文本的工具,封装了 MySQL 语句 load data local infile。
比如说要导入一个以 TAB 为分隔符的文本数据文件:/tmp/sample_ytt.txt 到表:ytt_new.t1,可以执行下面语句:
上面结果是 load data infile 语句的导入结果。如果改用 import_table 方法来做同样的事情,基于 Python 语法,使用方法如下:
那接下来看另外一个需求:在导入文本文件时对每行做预处理(例如在导入数据之前更改列 r2 的值为 mod(r1,10),列 r5 的值为 abs(r4-46) ),这样可以减少导入后再次处理的时间开销。
这个需求用 load data infile 语句非常容易实现:(导入时更改列 r2 和 r5 的数据,类似 UPDATE 语法)
那如果要用 util.import_table(importTable) 来实现上面的需求,在 MySQL 8.0.22 之前是没办法的。
随着 MySQL 8.0.22 的发布,MySQL 对 import_table 方法做了些扩充功能,其中增加了一个选项 “decodeColumns” 可以实现字段的预先输入定制化功能,并且还可以更加丰富。
接下来用 import_table 来实现上面的需求,定制化字段 r2 和 r5:
以上 Options 选项,见下图:
我来具体解释下上图的含义:蓝色字体 columns 对应的数组分别指定数据文件中的每行字段,也就是默认的 TAB 分隔符所分割的每列值,1 和 2 代表占位符,1 代表数据文件中每行的第一个列,2 代表数据文件中每行的第四列,decodeColumns 字典分别对需要预先输入的字段做处理。比如 r1 字段保留为变量 @1,r2 字段对应 mod(r1,10) 等。
如果还是不太理解变换规则,可以临时打开 general log, 上面 import_table(importTable)对应的 MySQL 日志为:
以上日志写的很清楚,内部转换为最基本的load data infile语法。
那这里我简单解读了下 MySQL 8.0.22 对 MySQL Shell 的一项定制化输入文本文件的新特性,更多的新特性可以继续关注。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)