当前位置:文档之家› 自动生成控制文件及数据文件并完成sqlldr的自动导入

自动生成控制文件及数据文件并完成sqlldr的自动导入

自动生成控制文件及数据文件并完成sqlldr的自动导入
自动生成控制文件及数据文件并完成sqlldr的自动导入

自动生成控制文件及数据文件并完成sqlldr的自动导入

在config.cfg里面配好相应的用户和表名就可得到相应的select语句和该表的控制文件,运行generate.sh可以得到该表的数据文件,运行sqlldr可以把生成的数据文件插入到目标库表中。目前功能有限,一次只能生成一个用户下的表。

config--配置文件

script --储存数据导出sql

unl --数据文件

ctl --控制文件

log --日志文件

bad --sqlldr导入错误数据

temp --临时文件

./temp.sh--生成源系统用户建表字段sql

#!/bin/sh

DB_USER=test

DB_PWD=test

DB_TNS=orcl2

sqlplus -s $DB_USER/$DB_PWD@$DB_TNS<

set echo off

set feedback off

set pagesize 0

set heading off

set linesize 120

set trimspool on

spool temp.txt

select table_name from user_tables;

spool off

EOF

./config/config.cfg:--源系统用户配置文件

#################################

# This config file is prepare for the script run.sh

#

#################################

# connect database username and password and the tnsname

# this parameter can help you to login the database

username=test

passwd=test

tnsname=orcl2

# the owner of target table which is the table's owner

owner=dbo

# the table that you want to get its record to generate data file

# you can add the table name and separate them with ','

#awk '{a[NR]=$1}END{for (i=1;i<=NR;i++) print a[i]}' $file

./config/sqlldr.cfg:--目标系统用户配置文件

#######################################

# This config file is prepare for the script sqlldr.sh

#######################################

# the target user and password and tnsname

# you can sql load the data file into the username/passwd@tnsname username=dbo

passwd=dbo

tnsname=tcell

./run.sh:--从源系统表中生成控制文件及sql导出脚本

#!/bin/sh

#run.sh

############################################################ ## parameter initialization

############################################################ username=""

passwd=""

tns=""

owner=""

table=""

############################################################ ## read the config file

## config file directory is ./config/config.cfg

############################################################ eval $(awk -F"=" '{

if ($1~/username/) print "username="$2;

if ($1~/passwd/) print "passwd="$2;

if ($1~/tnsname/) print "tns="$2;

if ($1~/owner/) print "owner="$2;

#if ($1~/tables/) print "tables="$2

}' ./config/config.cfg)

############################################################ ## generate the script file get_unl file

## to get the table's unl file

############################################################ rm -rf temp

mkdir temp

rm -rf script

mkdir script

rm -rf ctl

mkdir ctl

rm -rf unl

mkdir unl

file=./temp.txt

tables=($(cut -f1 $file))

echo "set heading off

set head off

set pagesize 0

set linesize 3000

set feedback off

set termout off

set trims on" > script/get_unl.sql

for ((i=0;i<${#tables[@]};i++))

do

echo "spool ./temp/${tables[i]}.tmp

select table_name,column_name,data_type from all_tab_cols where owner=upper('$username') and table_name=upper('${tables[i]}') orde

r by column_id;

spool off" >> script/get_unl.sql

done

echo "exit" >> script/get_unl.sql

#echo $tables | awk -F"," '{

# print "set heading off"

# print "set head off"

# print "set pagesize 0"

# print "set linesize 3000"

# print "set feedback off"

# print "set termout off"

# print "set trims on"

# for(i=1;i<=NF;i++) {

# print "spool ./temp/"$i".tmp"

# print "select table_name,column_name,data_type from all_tab_cols where #owner=upper('\'''$owner''\'') a

nd table_name=upper('\''"$i"'\'') order by column_id;"

# print "spool off"

# }

# print "exit"

# }' > script/get_unl.sql

echo "the script of get unl had been generated :"

ls script | grep "get_unl"

echo ""

############################################################

## run the sql script

## generate the temp file of the table and column information

############################################################ sqlplus -S $username/$passwd@$tns @script/get_unl.sql

echo "the tempfile of table and column information had been generate :"

ls temp

echo ""

############################################################

## generate the sql script which is select from the table

############################################################ for loop in $(ls temp)

do

#table_name=`echo $loop | awk -F"." '{print $1}'`

table_name=$(basename $loop .tmp)

new_file_select="script/"$owner"."$table_name".sql"

new_file_ctl="ctl/"$owner"."$table_name".ctl"

rm -f new_file_select

awk 'BEGIN{

print "set heading off"

print "set head off"

print "set pagesize 0"

print "set linesize 3000"

print "set feedback off"

print "set termout off"

print "set trims on"

print "spool unl/'$owner'.'$table_name'.unl"

print "select "

}{

if (NR==1){

if($3~/DATE/) print "to_char("$2",'\''yyyymmddHH24miss'\'')"

else print $2

}

else {

if($3~/DATE/) print "||'\''|'\''||to_char("$2",'\''yyyymmddHH24miss'\'')"

else print "||'\''|'\''||"$2

}

}

END{

print "||'\''|'\''"

print "from '$username'."$1";"

print "spool off"

print "exit"

}' temp/"$loop" > $new_file_select

awk 'BEGIN{

print "load data"

print "badfile '\'bad/$table_name.bad\''"

print "truncate into table '$table_name'"

print "fields terminated by '\''|'\''"

print "trailing nullcols"

print "("

}{

if (NR==1){

if($3~/DATE/) print ","$2" date '\''yyyymmddHH24miss'\''"

else print $2

}

else {

if($3~/DATE/) print ","$2" date '\''yyyymmddHH24miss'\''"

else print ","$2

}

}

END{

print ")"

}' temp/"$loop" > $new_file_ctl

done

echo "the select script had been generated :"

ls script | grep ^[^get_unl]

echo ""

echo "the sqlldr control file had been generated :"

ls ctl | grep [sql$]

# delete the temporary directory temp

#rm -rf temp

./generate.sh--生成数据文件

#!/bin/sh

#generate_unl.sh

#################################

## this shell script is in accordance with the script file in the directory script ## to generate the data file

################################

for loop in `ls script | grep ^[^get_unl]`

do

echo "the $loop is generating...please wait..."

sqlplus -s test/test@orcl2 @script/$loop

done

./sqlldr.sh--将数据sqlldr到目标系统

#!/bin/sh

#sqlldr.sh

## read the config file

eval $(awk -F"=" '{

if ($1~/username/) print "username="$2;

if ($1~/passwd/) print "passwd="$2;

if ($1~/tnsname/) print "tns="$2;

}' config/sqlldr.cfg)

## check the log directory

if [ -d log ]

then

rm -rf log/*

else

mkdir log

echo "directory log is created"

fi

## check the bad file directory

if [ -d bad ]

then

rm -rf bad/*

else

mkdir bad

fi

## check the bad file directory

echo "-------begin load data---------"

for loop in `ls script`

do

if (echo $loop | grep ^[^get_unl]>/dev/null 2>&1)

then

#table_name=`echo $loop | awk -F"." '{print $1"."$2}'`

table_name=$(basename $loop .sql)

sqlldr $username/$passwd@$tns control=ctl/$table_name.ctl

data=unl/$table_name.unl log=log/$table_name.log bad=bad/$table_name.bad rows=50000 errors=1000 direct=true silent='(header,feedback)' fi

done

for loop in `ls log`

do

echo "the sqlldr log file << $loop >> contain : "

grep -E 'not load|Total|success' log/$loop | grep -v 'thread'

echo ""

done

echo "------end load----------------"

软件测试用例参考文件

一、功能测试 1、对话框测试输入进行测试。包括中文字符、英文字符、数字字符、特殊字符、及几种字符的组合。 2、对界面可操作按钮进行测试。包括【新增(N)】【保存(S)】【修改(M)】【查询(A)】【打印(P)】【退出(X)】。同时需要对鼠标右键的菜单进行测试。 3、数据保存测试。将1 和2 进行组合。 4、必要条件控制测试。在做了3 时将必要条件(如:a、编号、姓名不可为空b、编号、姓名不可重复)控制测试联合起来。 二、图形界面测试 1.窗体是否能够基于相关的输入或菜单命令适当的打开 2.窗体是否能够改变大小、移动和滚动 3.窗体的数据是否能够利用鼠标、功能键、方向箭头和键盘操作 4.当窗体被覆盖并重新调用后,窗体是否能够正确再生 5.窗体相关的功能是否可以操作 6.是否显示相关的下拉菜单、工具条、滚动条、对话框、按钮、图标和其他控制,既能正确显示又能调用 7.显示多窗体时,窗体名称是否能够正确表示 8.活动窗体是否能够被反显加亮 9.多用户联机时所有窗体是否能够实时更新 10.鼠标无规则点击时是否会产生无法预料的结果 11.窗体声音及提示是否符合既定编程规则 12.窗体是否能够被关闭 13.窗体控件的大小、对齐方向、颜色、背景等属性的设置值是否和程序设计规约相一致 14.窗体控件布局是否合理、美观 15.窗体控件TAB 顺序是否从左到右,从上到下 16.窗体焦点是否按照编程规范落在既定的控件上 17.窗体画面文字(全、半角、格式、拼写)是否正确 18.鼠标有多个形状时是否能够被窗体识别(如漏斗状时窗体不接受输入)

三、功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。常用的测试方法如下: 1.页面链接检查:每一个链接是否都有对应的页面,并且页面之间切换正确。 2.相关性检查:删除/增加一项会不会对其他项产生影响,如果产生影响,这些影响是否都正确。 3.检查按钮的功能是否正确:如update, cancel, delete, save 等功能是否正确。 4.字符串长度检查: 输入超出需求所说明的字符串长度的内容, 看系统是否检查字符串长度,会不会出错. 5.字符类型检查: 在应该输入指定类型的内容的地方输入其他类型的内容(如在应该输入整型的地方输入其他字符类型),看系统是否检查字符类型,会否报错. 6.标点符号检查: 输入内容包括各种标点符号,特别是空格,各种引号,回车键.看系统处理是否正确. 7.中文字符处理: 在可以输入中文的系统输入中文,看会否出现乱码或出错. 8.检查带出信息的完整性: 在查看信息和update 信息时,查看所填写的信息是不是全部带出.,带出信息和添加的是否一致 9.信息重复: 在一些需要命名,且名字应该唯一的信息输入重复的名字或ID,看系统有没有处理,会否报错,重名包括是否区分大小写,以及在输入内容的前后输入空格,系统是否作出正确处理. 10.检查删除功能:在一些可以一次删除多个信息的地方,不选择任何信息,按”delete”,看系统如何处理,会否出错;然后选择一个和多个信息,进行删除,看是否正确处理. 11.检查添加和修改是否一致: 检查添加和修改信息的要求是否一致,例如添加要求必填的项,修改也应该必填;添加规定为整型的项,修改也必须为整型. 12.检查修改重名:修改时把不能重名的项改为已存在的内容,看会否处理,报错.同时,也要注意,会不会报和自己重名的错. 13.重复提交表单:一条已经成功提交的纪录,back 后再提交,看看系统是否做了处理。 14.检查多次使用back 键的情况: 在有back 的地方,back,回到原来页面,再back,重复多次,看会否出错. 15.search 检查: 在有search 功能的地方输入系统存在和不存在的内容,看search 结果是否正确.如果可以输入多个search 条件,可以同时添加合理和不合理的条件,看系统处理是否

c语言单元测试用例全自动生成软件wings介绍

wings是一款用于单元测试测试用例驱动框架自动生成工具,简单来说这款工具主要是全自动生成单元测试驱动代码与测试数据。 下面我们尝试使用wings来完成单元测试框架与测试数据的自动生成。 首先准备好需要测试的C语言工程,本文以大型开源软件Mysql为例。 第一步:打开wings工具,选择被测工程的主要目录。 第二步:点击工程操作中的分析生成,对工程目录下的.c文件进行解析,保存为XML 的格式,生成的文件保存在工程目录下的FunXml与GlobalXml中,分别是函数信息与全局变量的信息,点击驱动文件结构图,即可看到对应文件的函数结构信息。

上图可以查看所有.c文件的驱动函数,以及函数所对应的参数信息与全局变量的信息。 第三步:点击功能操作驱动生成,完成项目的驱动框架自动生成,驱动文件保存在wings_projects下的Driver文件夹下。点击驱动文件,即可看到对应.c文件的驱动生成代码。 点击单个函数,可以高亮定位到函数所在位置,并且双击函数参数,可以定位到每个参数的赋值单元,查看每个参数的具体驱动赋值代码。 第四步:点击值功能操作的值生成按钮,则对应生成测试数据。

界面上显示为单个函数的测试数据,可依据需要修改测试次数,重新生成测试数据文件,也可依据需要修改特定的测试数据。 第五步:将驱动文件加载到所在工程目录,与源文件一起编译,即可运行。 如果想查看对应的函数信息与全局变量信息,则右键对应打开对应的Parameter Struture Description(函数信息结构体)与Global Parameter Struture Description(全局变量结构图)。 Parameter Struture Description(函数信息结构体):显示函数的名称,参数个数,参数类型以及复杂类型的展开形式。 Global Parameter Struture Description(全局变量结构图):显示全局变量的结构信息。 使用过程中注意事项: (1)编译源文件过程中,需要手动注释调源文件中的main函数,wings将自动生成调用驱动函数的主函数。 (2)遇到特殊类型的赋值或者系统变量的驱动构造,可自行添加模板赋值方式,添加之后,再次生成驱动文件即可。 例如:遇到FILEL类型的赋值,可在模板中添加对应的赋值方式。

用Excel实现检验报告的自动生成

■●莲主_用Excel实现检验报告的自动生成 陈培光1崔运美2 (1.烟台市鸿山建设监理有限责任公司,烟台264000; 2.烟台市建筑材料科学研究所,烟台2删) 摘要针对目前检验报告在形成过程中存在过程繁杂及重复较多的情况,作者在大量实验研究的基础上, 提出了一种新的检验报告生成方法。详细介绍了如何在Excel中建立数据源文件和报告格式,并利用Excel的函数 功能自动调用数据源的数据,自动形成检验报告的过程。从而减少了检验报告形成过程中的重复劳动,确保了检 验报告的唯一性和准确性。 关键词检验报告;Excel;数据源文件;报告格式 DOI:10.3969/j.issIL1000—0771.2010.09.020 O引言 大多数质检机构在编制检验报告时,一般都用专门制作的程序软件,既方便又快捷。而对于一些检验产品比较单一、工作量又不是很大的检验机构,没有配备专门制作的软件。在编制检验报告时,要根据记录编制报告的封页、首页、附贞,有时还要对成批的报告做台帐进行汇总上报,其中有很多内容是在重复填写。而且,在进行报告审核时,要核对记录与报告、记录与台帐、报告各页之间的准确性和完整性,效率低且容易出错。而通过使用Excel,可以不用编程,只需将来样记录(样品台帐)、检验结果记录(结果台帐)编制成Excel表格格式,并制作出报告封页、首页、附页的格式,利用Excel函数,就可以自动提取来样记录、检验结果记录中的内容而自动生成检验报告。不但减少了重复劳动,而且保证了记录与报告及台帐之间数据和信息的唯一性、准确性。 1实施过程 检验报告(含报告封页、首页、附页)里的内容包括两部分:一部分内容是固定不变的,将其称为报告格式;一部分内容是变化的,将其称为数据源,如报告编号、产品名称等,它们以记录的形式存储在数据源文件中。 现以笔者试验室的检验报告编制过程为例,说明具体的实施过程。 1.1用“来样记录”工作表做数据源文件自动生成盐量蕉鲞至Q!Q:塑旦2报告封页和首页 启动Excel2003(其他版本仿照操作),新建一个工作薄,在sheetl中建立名为“来样记录”的工作表做数据源文件,如图l所示。 图l“来样记录”工作表 切换到sheet2工作表中,制作一个“报告首页”的格式,如图2。并在“报告首页”工作表中进行以下操作: 图2“报告首页”工作表格式 1)选定一个单元格,如J4,供打印和查找时输入行号。这个单元格由自己自由选择,如果改变这个单元格的位置,下面的公式中要做相应的修改。 ?6l? 万方数据

数据自动生成工具 DataFactory 的使用

数据自动生成工具DataFactory 的简单使用 一、简介: Quest DataFactory 是一种快速的、易于产生测试数据工具,它能建模复杂数据关系,且有带有GUI界面。DataFactory是一个功能强大的数据产生器,它允许开发人员和QA毫不费力地产生百万行有意义的测试数据。 二、工作原理: 首先读取数据库中表的schema,即表的定义之类的内容,以列表的形式显示;然后由用户定制要产生数据的具体内容,如数字范围、字符串长度、要产生数据记录的个数等等,最后运行工程,生成数据。 三、安装: 看到网上DataFactory有5.6版本,但是这里使用的是5.2破解版。笔者没有详细研究这两个版本的区别,有兴趣的读者可以自己查阅相关资料。 四、使用说明: DataFactory支持的数据库类型有:DB2、SQL Server、Oracle以及Sybase,最后是ODBC 数据源。本文以ODBC为例来作介绍。在产生数据之前,需要首先设置好系统ODBC数据源,即添加待操作的数据源(开始--》控制面板--》管理工具--》ODBC数据源)。简单起见,创建一个Access数据库DataFactory.accdb,并在其中创建一个customer表。设数据源名称为test,添加完成之后,如下图所示:

图1: 五、产生数据的具体操作方法: 1. 新建工程,在添加数据库时选择ODBC 图2 :

2. 在“Machine Data Source”选项卡中选择test数据源(图3),确定之后会提示输入密码来登录(图4),不填,确定即可。这样,数据库就添加成功(图5),点击OK。 图3:

测试数据生成工具DataFactory的使用

DATA FACTORY的使用 Data Factor y是一个数据库测试数据生成工具。 Data Factory主要可以利用在以下两个方面:1.按照数据表中要求数据的格式,快速产生标准或不标准的测试数据,用来测试系统的功能;2.产生大量的随机数据,用来测试在海量数据的情况下的系统性能。3.从其它数据库中相关数据重新组合生成测试数据。 使用Data Factory生成测试数据,先要连接数据库,选择数据库中存在的表,根据不同的字段类型选择不同的数据生成方式:在这里,可以从文档、其他数据库、随机数据、软件自带的数据字典等多种方式生成测试的数据。然后将这些生成的测试数据添加到选择的表中。同时,Data Factory也有许多附带的功能,提供了灵活的数据生成方式。 第一章新建项目 安装好该软件后,进入系统界面: Fils new新建项目,输入项目名 称后点击add;选择数据库,输入用户名 以及密码后,系统会产生一个文件,选 择保存路径后新建项目成功. 双击数据库的图标,如下图所示 (图2),左栏是能选择数据库名和表名, 右栏则是已选中的表,确定后进入详细 的设置页面.

图2 双击表名能进入(图3)对表进行一些设置.这里能调整数据的产生量(默认是100条),右栏中的是选中的字段,可以把不需要添加数据的字段移到左栏中,对这些字段将不插入数据. 利用move up和move down对字段优先级进行设置.(优先级影响着下文中一些函数的使用。) 在output书签中可以选择将产生的测试数据直接保存到数据库 中,还是保存到新到文本中去。

图3 data factory会读入所选择的表中的所有字段名及其属性,但data factory的数据格式只有3种:text、numeric、date;所以一些例如oracle 数据库中long ,varchar等属性会统一为text属性,只是长度不同而已。 第二章数据生成 一、TEXT有6种输入方式 以下为TEXT模式中一些通用的附加设置,在后面不做介绍: (

浅谈测试数据自动化管理系统的建设

浅谈测试数据自动化管理系统的建设 摘要测试数据自动化管理系统提供了产品生产单位进行测试数据采集、归档、展示、分析和处理等功能,通过计算机信息技术手段实现提高测试数据质量,提升产品制造技术和测试管理水平,降低技术改进成本、缩短研发周期,深入挖掘测试数据价值的目标。 关键词测试;自动化;提高;数据;产品质量 引言 在产品生产中,产品测试是重要阶段,通过测试信息,可以为各类人员提供产品功能、性能等多方面的信息。并且在测试信息知识库的基础上,可以提供同类产品测试数据的浏览,分析,技术人员吸取经验,加快了技术支持改进,增强了产品质量。信息化技术应用到产品测试领域是现代仪器发展的必然趋势,推进基于信息化的测试数据自动化管理系统可以实现从传统“机械军工”向数字化、集成化、网络化“数字军工”转变。 1 系统介绍 1.1 系统总体设计 (1)系统总体结构 测试数据自动化管理系统采用C/S+B/S模式结构,即多个数据采集终端为客户端、SQL Server为数据库服务器所组成的C/S模式结构与浏览器(IE)、Web Server应用服务器和SQL Server为数据库服务器所组成的B/S三层模式结构相结合,解决了多数据源异构工程的数据集成和管理,实现测试数据工艺流程、过程数据资源的全过程管理系统。 (2)系統功能 系统主要用于产品生产过程测试,通过集成多种专业采集系统、测试仪器,实现生产测试数据自动化采集、集中存储、关键测试参数控制,质检单自动生成等功能,整个系统是多项目并发测试,同时多项目采集管理,并形成相关关联,达到快速产品测试及管理,形成对产品的测试数据追溯。 1.2 系统功能模块应用 从功能模块上划分,可分为:测试过程管理、测试任务管理、测试数据数据库管理和系统管理。其中最为重要的测试过程管理大致包括测试设计、测试准备、测试实施、测试数据获取、测试数据处理和测试报告生成六个阶段。

相关主题
文本预览
相关文档 最新文档