1、一种是只要数据条数,至于里面内容可以是序列方式,另外可能几个表中相互id的关联,那建议用存诸过程写。
表a(id,name)有学员的信息
表b(id,testid,subject,score)有学员的考试成绩
假设表a与表b的id都是有seq的自增长系列;表b。testid=表a。id,现需要构造一千个学员和科目学分。
以下存储过程内容:
declare (seq_b.nextval,mytestid,mysubject||cnt,80); cnt:=cnt+1; |
另一种方法:数据的内容要多样化,且内容要真实一些,不可以是用cnt的内容,那建议用cvs的方式准备好各类内容数据,运行一个脚本即可。
假设学员信息表A已有,现需要1000条真实科目分数数据。
第一步:先准备ctl脚本:如:b.ctl (可以用记事本方式写)
1.options (skip=1,rows=100) 2.load data 3.infile "b.csv" 4.truncate 5.into table b 6.fields terminated by "," 7.optionally enclosed by '"' 8.trailing nullcols 9.( 10. id "seq_b.nextval", 11. testid, 12. subject, 13. score 14 ) |
以上ctl每行详细说明:
1.skip 跳过csv文件的第一列(一般第一列为列名);rows表示每次取多少条运行,分批运行减少性能问题
3.是你csv的文件的名字
4.写入数据库的方式:truncate为清除表中数据后,写入csv中的内容;append为直接把csv中内容追加入数据库;主要用到这二个,其他不介绍了。
5. 写入数据库的表名
6,7行建议不要改动,为数据分隔处理用
10-13注意:有seq的,需要像10那样写,如果有date类型,举列,字段列名为modify_time的则写成: modif_tiyme date‘yyyy-mm-dd hh24:mi:ss'
第二步:准备b.CSv内容,请xls里直接录入即可
csv第一列 id testid subject score
第三步:用sqlldr执行
注意:oracle客户端装好后,要把oracle\bin目录加到环境变量里去,这样才能使用sqlldr.exe可执行文件
步骤:
在你的windows端,打开,点运行,录入cmd,切换到你存上面二个文档的目录,然后录入以下格式:sqlldr 数据库登录名/密码@数据库名 control=b.ctl
版权声明:本文出自rd_clp的51Testing软件测试博客:http://www.51testing.com/?368811
原创作品,转载时请务必以超链接形式标明本文原始出处、作者信息和本声明,否则将追究法律责任。