资料
https://github.com/gangly/datafaker
安装 python 3
yum install python3 -y
rm -f /usr/bin/python
ln -s /usr/bin/python3 /usr/bin/python
sed -i "s:\<python\>:python2:g" /usr/bin/yum
sed -i "s:\<python\>:python2:g" /usr/libexec/urlgrabber-ext-down
复制
安装 datafaker
pip3 install datafaker -i https://mirrors.aliyun.com/pypi/simple/
复制
安装 cx-Oracle
pip3 install cx-Oracle -i https://mirrors.aliyun.com/pypi/simple/
复制
创建测试用户和测试表
create tablespace test datafile '/u01/app/oracle/oradata/ORCLT/test02.dbf' size 1024M;
create user test identified by test default tablespace test;
grant connect,resource to test;
grant unlimited tablespace to test;
drop table test.stu purge;
create table test.stu (
id NUMBER primary key,
name varchar2(20) not null,
school varchar2(20) not null,
nickname varchar2(20) not null,
age NUMBER not null,
class_num NUMBER not null,
score NUMBER(4,2) not null,
phone NUMBER not null,
email varchar2(64),
ip varchar2(32),
address CLOB
);
复制
编写元数据 meta.txt
编写文件
[oracle@ora11g ~]$ vi meta.txt id||int||[:inc(id,1)] name||varchar(20)||[:name] school||varchar(20)||[:enum(file://names.txt)] nickname||varchar(20)||[:enum(鬼泣, 高小王子, 歌神, 逗比)] age||int||[:age] class_num||int||[:int(10, 100)] score||decimal(4,2)||[:decimal(4,2,1)] phone||bigint||[:phone_number] email||varchar(64)||[:email] ip||varchar(32)||[:ipv4] address||text||[:address]
复制
meta.txt 文件中每行数据为元数据的一个字段描述,以 || 分割为三列,使用 # 注释。
- 第一列:字段名
- 第二列:表字段类型,不是使用 Oracle 的字段类型。
- 第三列:字段注释,其中包含构造规则标识
其中 school 列 [:enum(file://names.txt)] 表示从本地文件 names.txt 中读取枚举数据,表示学校名称只能从下面这5所学校中随机产生。names.txt 内容如下:
[oracle@ora11g ~]$ vi names.txt 清华中学 人和中心 广东中学 猪场 旧大院
复制
注意:meta.txt 和 names.txt 需要放在同一个目录下,再运行 datafaker 命令。
数据的构造规则
https://github.com/gangly/datafaker/blob/master/doc/ConstructionRule.md
使用 datafaker 构造数据
从本地文件 meta.txt 中读取元数据,以两个逗号分隔符构造 10 条数据,打印在屏幕上
[oracle@ora11g ~]$ datafaker rdb oracle://test:test@192.168.0.51:1521/orclt stu 10 --outprint --meta meta.txt --outspliter ,,
1,,陆秀兰,,广东中学,,鬼泣,,2,,95,,66.99,,13973233532,,pye@yahoo.com,,四川省昆明县龙潭张家港街g座 319391
2,,刘杨,,清华中学,,高小王子,,39,,51,,41.5,,18945845045,,jiangli@wr.com,,河南省贵阳县沙湾澳门路p座 737838
3,,葛斌,,猪场,,逗比,,89,,14,,81.58,,15975857272,,czheng@gmail.com,,青海省瑞市徐汇阜新街w座 394727
4,,李平,,旧大院,,鬼泣,,27,,93,,26.6,,18928744698,,bwang@hotmail.com,,山西省天津县普陀太原街U座 799243
5,,邓敏,,旧大院,,高小王子,,9,,18,,41.1,,15299201966,,ishen@gmail.com,,广西壮族自治区汕尾市东城辽阳路E座 249984
6,,王瑜,,清华中学,,鬼泣,,60,,20,,47.46,,18216153772,,nxiao@22.cn,,江苏省齐齐哈尔县丰都深圳街E座 823477
7,,李秀梅,,旧大院,,歌神,,81,,45,,95.95,,15297997894,,junzou@mingqiang.net,,广东省春梅县西夏陈街s座 976877
8,,齐旭,,旧大院,,歌神,,94,,19,,72.49,,15387397529,,zhuping@jun.net,,重庆市银川县房山沈阳路a座 750125
9,,张杨,,猪场,,逗比,,47,,83,,76.72,,18680870954,,longqiang@yahoo.com,,青海省海门县牧野杨路z座 257587
10,,张娜,,猪场,,逗比,,24,,42,,53.83,,13793571085,,yetao@qiangyan.org,,西藏自治区超县涪城荆门街v座 672405
time used: 0.126 s
复制
将构造的数据写入到 Oracle 数据库中
[oracle@ora11g ~]$ datafaker rdb oracle://test:test@192.168.0.51:1521/orclt stu 10 --meta meta.txt
insert 10 records
time used: 0.470 s
复制
- 若要再次运行,需要修改 meta.txt 文件中为 id[:inc(id,11)] 起始值为11或更大值,不然数据库会报主键重复错误。
- 验证数据
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
您好,您的文章已入选墨力原创作者计划合格奖,10墨值奖励已经到账请查收!
❤️我们还会实时派发您的流量收益。
2年前

评论
相关阅读
【专家有话说第五期】在不同年龄段,DBA应该怎样规划自己的职业发展?
墨天轮编辑部
1464次阅读
2025-03-13 11:40:53
Oracle RAC ASM 磁盘组满了,无法扩容怎么在线处理?
Lucifer三思而后行
894次阅读
2025-03-17 11:33:53
RAC 19C 删除+新增节点
gh
546次阅读
2025-03-14 15:44:18
2月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
498次阅读
2025-03-13 14:38:19
Oracle 如何修改 db_unique_name?强迫症福音!
Lucifer三思而后行
427次阅读
2025-03-12 21:27:56
Oracle DataGuard高可用性解决方案详解
孙莹
372次阅读
2025-03-26 23:27:33
墨天轮个人数说知识点合集
JiekeXu
320次阅读
2025-04-01 15:56:03
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
297次阅读
2025-04-08 09:12:48
风口浪尖!诚通证券扩容采购Oracle 793万...
Roger的数据库专栏
267次阅读
2025-03-24 09:42:53
切换Oracle归档路径后,不能正常删除原归档路径上的归档文件
dbaking
267次阅读
2025-03-19 14:41:51
TA的专栏
目录