基于PostgreSQL的空间数据批量上传.docx
- 文档编号:25207314
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:28
- 大小:152.02KB
基于PostgreSQL的空间数据批量上传.docx
《基于PostgreSQL的空间数据批量上传.docx》由会员分享,可在线阅读,更多相关《基于PostgreSQL的空间数据批量上传.docx(28页珍藏版)》请在冰豆网上搜索。
基于PostgreSQL的空间数据批量上传
软件工程综合实习报告
实习任务名称:
基于PostgreSQL的空间数据批量上传的实现
小组成员姓名:
班级学号:
2011年5月
目录
1.系统概述1
1.1系统背景1
1.2系统目标1
1.3里程碑计划1
1.4系统可交付成果2
1.5人力计划2
1.6人员计划2
1.7测试计划3
1.8开发环境与工具3
2.需求分析4
2.1现有系统概述4
2.2系统需求概述4
2.3功能性需求4
2.4非功能性需求4
2.4.1用户界面4
2.4.2硬件考虑5
2.4.3性能特征5
2.4.4错误处理5
2.4.5系统接口5
2.4.5质量要求5
2.4.6安全问题6
2.4.7系统变更6
2.5系统模型6
2.5.1用例模型6
2.5.1.1参与者汇总6
2.5.1.2用例汇总6
2.5.1.3顶层用例图7
2.5.1.4用例描述7
2.5.2对象模型7
2.5.3动态模型7
3.概要设计8
3.1系统总体设计8
3.1.1逻辑结构设计8
3.1.2软件架构设计8
3.2系统功能设计8
3.2.1总体结构8
3.2.1功能设计说明8
3.3数据库设计9
3.3.1建库设计9
3.3.2数据库表存放关系9
3.4界面设计9
3.4.1主界面9
3.4.2子界面A10
4.详细设计11
4.1模块接口设计11
4.1.1接口A11
4.1.1.1功能描述11
4.1.1.2数据结构11
4.1.1.3输入项与输出项11
4.1.1.4算法与程序逻辑11
5.单元测试12
6.系统测试13
6.1模块测试13
6.1.1模块A13
6.1.1.1模块简述13
6.1.1.2测试结果13
6.2模块缺陷数量统计14
6.3测试评价14
6.3.1充分性评价14
6.3.2缺陷与不足14
6.3.3改进建议14
7.实习体会15
参考文献16
1.系统概述
1.1系统背景
PostgreSQL是以加州大学伯克利分校计算机系开发的POSTGRES,版本4.2为基础的对象关系型数据库管理系统(ORDBMS)。
PostgreSQL支持大部分SQL标准并且提供了许多其他现代特性:
复杂查询、外键、触发器、视图、事务完整性、多版本并发控制。
同样,PostgreSQL可以用许多方法扩展,比如,通过增加新的数据类型、函数、操作符、聚集函数、索引方法、过程语言。
并且,因为许可证的灵活,任何人都可以以任何目的免费使用,修改,和分发PostgreSQL,不管是私用,商用,还是学术研究使用。
本次实习的内容同将数据从oracle迁移到postgreSQL有关,是将导入到oracle的空间数据批量上传到postgresql的表中,并设置界面控制上传过程,在界面上能够展示上传进度和消耗时间。
1.2系统目标
序号
目标内容
1
将oracle里面的数据上传到postgresql里面
2
按行批量上传数据,用户可以自己设置一次性提交给postgresql的批量数
3
4
1.3里程碑计划
序号
项目阶段
阶段完成标准(里程碑)
开始时间
结束时间
工作量(日)
1
项目启动
项目启动会议
4/16
4/16
1
2
项目计划
项目计划核准
4/17
4/18
2
3
项目实施
需求分析完成
4/19
4/23
5
4
项目实施与监控
概要设计完成
4/24
4/26
3
5
项目实施与监控
详细设计完成
4/27
4/30
3
6
项目实施与监控
系统代码完成
5/1
5/20
20
7
项目实施与监控
系统测试完成
5/21
5/23
2
8
项目实施与监控
交付软件成果
5/24
5/24
1
合计
38
1.4系统可交付成果
序号
里程碑
可交付成果
交付日期
责任人
主要工作
1
需求分析完成
软件需求规格说明
4/23
刘子靖
撰写需求规格说明书
2
概要设计完成
概要设计说明
4/25
刘子靖
撰写概要设计说明书
3
详细设计完成
详细设计说明
4/26
刘子靖
撰写详细设计说明书
4
系统代码完成
单元测试问题追踪表
5/23
刘子靖
编写代码
5
系统测试完成
系统测试报告
5/23
刘子靖
测试并撰写系统测试报告
6
交付软件成果
系统软件/演示数据
5/26
刘子靖
软件演示和交付
1.5人力计划
序号
阶段
开始时间
结束时间
人力数量
备注
1
项目启动
4/16
4/16
1
无
2
计划核准
4/17
4/18
1
无
3
需求分析
4/19
4/23
1
无
4
概要设计
4/24
4/26
1
无
5
详细设计
4/27
4/30
1
无
6
编码及单元测试
5/1
5/20
1
无
7
系统测试
5/21
5/23
1
无
8
系统提交
5/24
5/24
1
无
序号
姓名
进入日期
期望结束日期
承担角色和职责
1
刘子靖
4/16
5/26
项目经理
2
刘子靖
4/16
5/26
配置管理员
3
刘子靖
4/16
5/26
业务分析师
4
刘子靖
4/16
5/26
需求分析
5
刘子靖
4/16
5/26
系统架构与功能设计师
6
刘子靖
4/16
5/26
系统界面设计师
7
刘子靖
4/16
5/26
研发人员
8
刘子靖
4/16
5/26
研发人员
8
刘子靖
4/16
5/26
数据库设计人员,DBA
9
刘子靖
4/16
5/26
测试负责人
10
刘子靖
4/16
5/26
质量保证员
1.6人员计划
1.7测试计划
序号
测试产品
测试类型
开始时间
结束时间
负责人
1
数据传送
单元测试
5/4
5/4
刘子靖
2
界面
单元测试
5/4
5/4
刘子靖
3
…..
单元测试
4
模块A+模块B
集成测试
5/5
5/5
刘子靖
5
…..
集成测试
6
交付系统
系统测试
5/5
5/5
刘子靖
7
系统提交最终产品
验收测试
5/5
5/5
刘子靖
合计
1.8开发环境与工具
序号
类别
具体需求
备注
1
硬件
windowsXP
2GB内存320G硬盘
2
软件
Oracle10g/PostgreSQL8.4
Eclipse
2.需求分析
2.2系统需求概述
将oracle数据里已经有的数据以行数为单位批量上传到PostgreSQL中,用户可以自由控制行数,以此节约上传时间。
并且在界面上展示上传进度和上传时间。
2.3功能性需求
▪系统的功能需求主要包括以下几个方面:
1用户可以自己设置批量的单位(行数)。
2系统可以将oracle已有的数据上传到postgresql中。
3系统可以显示上传的进度。
4系统可以显示上传时间
2.4非功能性需求
2.4.1用户界面
1、界面友好;
2、优化效率尽可能高。
3、简单易于用户操作。
4、可以显示出上传进度和上传时间。
2.4.2硬件考虑
系统的主要功能是数据的导入导出,仅仅涉及字符串的相关操作,对硬件的要求不高。
使用2GB内存320G硬盘的硬件。
2.4.3性能特征
1、响应时间不超过5秒;
2、数据量没有要求。
2.4.4错误处理
1.当PostgreSQL里面的数据表没有清空时会有相应的提醒。
2.当数据库的用户名和密码错误时有相应的提醒。
3.当数据库接口错误的时候会提醒用户。
4.当数据库的端口设置错误时候会有相应的提醒。
2.4.5系统接口
本系统不用与其他外界系统进行交互。
2.4.5质量要求
主要质量属性
详细要求
正确性
能够批量上传,批量数越大时所耗费的时间越少
可靠性
准确的上传所有要上传的数据,没有遗漏
健壮性
能对用户的错误进行提示
兼容性
兼容所有的Windows系统
2.4.6安全问题
1、连接Oracle时需输入用户名和密码;
2、连接PostgreSQL时需输入用户名和密码。
2.4.7系统变更
1、可以上传其他表格式的空间数据;
2、可以从硬盘的目录下的文件直接上传数据。
2.5系统模型
2.5.1用例模型
2.5.1.1参与者汇总
参与者
参与者说明
用户
操作上传数据的过程
系统
数据上传,展示进度和时间
2.5.1.2用例汇总
用例编号
用例名称
优先级
复杂度
UseCase-1
Student
1
一般
UseCase-2
Teacher
2
一般
UseCase-3
Administrator
3
一般
2.5.1.3顶层用例图
2.5.2动态模型
3.概要设计
3.1系统总体设计
3.3数据库设计
3.3.1建库设计
[对系统中需要管理的各种数据,用什么方式进行管理进行设计。
对放到数据库中管理的数据,要描述出表、表之间的关系、视图、触发器、储存过程接口等设计。
此处可以使用下列表格形式直观地描述数据表的定义]
序号
字段名称
类型
宽度(字节)
说明
1
2
3.3.2数据库表存放关系
Oracle中和PostgreSQL中各有一个mf10表,用于存放空间数据。
3.4界面设计
3.4.1主界面
3.4.2主界面算法
publicclassMainUI{
publicAppContextcontext=null;//@jve:
decl-index=0:
privateShellsShell=null;//@jve:
decl-index=0:
visual-constraint="7,4"
privateGroupgroupOracle=null;
privateGroupgroupPgsql=null;
privateCLabelcLabel=null;
privateTextoHost=null;
privateCLabelcLabel1=null;
privateTextoPort=null;
privateCLabelcLabel2=null;
privateTextoDatabase=null;
privateCLabelcLabel3=null;
privateCLabelcLabel4=null;
privateTextoUserName=null;
privateTextoPassword=null;
privateCLabelcLabel5=null;
privateCLabelcLabel6=null;
privateCLabelcLabel7=null;
privateCLabelcLabel8=null;
privateCLabelcLabel9=null;
privateTextpHost=null;
privateTextpPort=null;
privateTextpDatabase=null;
privateTextpUserName=null;
privateTextpPassword=null;
privateGroupgroup=null;
privateLabellabel=null;
privateTexttxtBatchNum=null;
privateProgressBarprogressBar=null;
privateButtonbtnAbout=null;
privateButtonbtnApply=null;
privateLabellabel1=null;
privateTextoTableName=null;
privateCLabelcLabel10=null;
privateTextpTableName=null;
privateButtonbtnClear=null;
privateTexttaInfo=null;
publicShellgetShell(){
returnthis.sShell;
}
publicButtongetButtonApply(){
returnthis.btnApply;
}
publicTextgetInfoText(){
returnthis.taInfo;
}
publicvoidinit(){
createSShell();
}
/**
*ThismethodinitializessShell
*/
privatevoidcreateSShell(){
GridLayoutgridLayout=newGridLayout();
gridLayout.numColumns=5;
sShell=newShell();
sShell.setText("PostgreSQL批量上传");
sShell.setSize(newPoint(600,450));
sShell.setLayout(null);
createGroupOracle();
createGroupPgsql();
createGroup();
progressBar=newProgressBar(sShell,SWT.NONE);
progressBar.setSize(newPoint(520,20));
progressBar.setLocation(newPoint(40,310));
btnAbout=newButton(sShell,SWT.NONE);
btnAbout.setSize(newPoint(100,30));
btnAbout.setText("关于(&A)");
btnAbout.setLocation(newPoint(50,270));
btnAbout
.addSelectionListener(neworg.eclipse.swt.events.SelectionAdapter(){
publicvoidwidgetSelected(
org.eclipse.swt.events.SelectionEvente){
actionAbout();
}
});
btnApply=newButton(sShell,SWT.NONE);
btnApply.setLocation(newPoint(400,270));
btnApply.setText("执行");
btnApply.setSize(newPoint(100,30));
taInfo=newText(getShell(),SWT.MULTI|SWT.WRAP|SWT.V_SCROLL);
taInfo.setBackground(Display.getCurrent().getSystemColor(
SWT.COLOR_WIDGET_BACKGROUND));
taInfo.setSize(newPoint(520,50));
taInfo.setLocation(newPoint(40,340));
taInfo.setForeground(newColor(Display.getCurrent(),0,0,0));
btnApply
.addSelectionListener(neworg.eclipse.swt.events.SelectionAdapter(){
publicvoidwidgetSelected(
org.eclipse.swt.events.SelectionEvente){
apply();
}
});
}
/**
*ThismethodinitializesgroupOracle
*
*/
privatevoidcreateGroupOracle(){
GridDatagridData=newGridData();
gridData.horizontalSpan=4;
groupOracle=newGroup(sShell,SWT.NONE);
groupOracle.setLayout(null);
groupOracle.setText("Oracle连接配置");
groupOracle.setLocation(newPoint(40,10));
groupOracle.setSize(newPoint(220,195));
groupOracle.setLayoutData(gridData);
cLabel=newCLabel(groupOracle,SWT.NONE);
cLabel.setText("主机:
");
cLabel.setLocation(newPoint(25,20));
cLabel.setSize(newPoint(42,18));
oHost=newText(groupOracle,SWT.BORDER);
oHost.setSize(newPoint(100,20));
oHost.setText("localhost");
oHost.setLocation(newPoint(85,20));
cLabel1=newCLabel(groupOracle,SWT.NONE);
cLabel1.setText("端口:
");
cLabel1.setLocation(newPoint(25,50));
cLabel1.setSize(newPoint(42,18));
oPort=newText(groupOracle,SWT.BORDER);
oPort.setText("1521");
oPort.setLocation(newPoint(85,50));
oPort.setSize(newPoint(70,20));
cLabel2=newCLabel(groupOracle,SWT.NONE);
cLabel2.setText("数据库:
");
cLabel2.setLocation(newPoint(25,80));
cLabel2.setSize(newPoint(54,18));
oDatabase=newText(groupOracle,SWT.BORDER);
oDatabase.setSize(newPoint(70,20));
oDatabase.setText("orcl");
oDatabase.setLocation(newPoint(85,80));
cLabel3=newCLabel(groupOracle,SWT.NONE);
cLabel3.setText("用户名:
");
cLabel3.setLocation(newPoint(25,140));
cLabel3.setSize(newPoint(54,18));
cLabel4=newCLabel(groupOracle,SWT.NONE);
cLabel4.setText("密码:
");
cLabel4.setLocation(newPoint(25,170));
cLabel4.setSize(newPoint(42,18));
oUserName=newText(groupOracle,SWT.BORDER);
oUserName.setSize(newPoint(70,20));
oUserName.setText("testuser");
oUserName.setLocation(newPoint(85,140));
oPassword=newText(groupOracle,SWT.BORDER);
oPassword.setSize(newPoint(70,20));
oPassword.setText("admin");
oPassword.setLocation(newPoint(85,170));
label1=newLabel(groupOracle,SWT.NONE);
label1.setText("表名:
");
label1.setLocation(newPoint(25,110));
label1.setSize(newPoint(50,20));
oTableName=newText(groupOracle,SWT.BORDER);
oTableName.setText("mf10");
oTableName.setLocation(newPoint(85,110));
oTableName.setSize(newPoint(70,20));
}
/**
*ThismethodinitializesgroupPgsql
*
*/
privatevoidcreateGroupPgsql(){
GridDatagridData1=newGridDat
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 PostgreSQL 空间 数据 批量 上传