PB数据管道
数据管道提供了一种不同数据库之间传递数据和(或)表结构的方法。
数据管道对象
要完毕数据管道的功能须要提供例如以下内容:
须要数据源和目标数据库,并可以和这两个数据库正常联接
须要源数据库中的哪些表;
须要拷贝到目标数据库中的什么位置;
要完毕哪些管道操作;
错误发生的频率;
同意错误发生的最大数;
须要包含的扩充特性。
数据管道画板
New —> DataBase —> Data Pipeline
数据管道选项:
Table:目标表名
Key:目标表的主键名(非主键字段名)
Options:管道选项
Create:加入�表、Replace:替换已存在的表、Refresh:删除或者插入行、Append:插入行、Update:更新或者插入行
Max Errors:同意的最大错误数
Commit:被提交的事务处理内的行数
Extended Attributes:扩充特性是否管道化
Design->Database Bolb 处理Blob类型的字段
假设在目标数据库中仅仅创建数据表而不拷贝原来的数据,能够通过定义永远不成立的检索条件来实现,比方2<1作为检索条件。
数据管道用户对象
New —> PB Object —> Standard Class —> OK —> 选中pipeline —> OK
属性:
DataObject:指定使用哪个数据管道
该属性是数据管道最重要的一个属性,有些类似于数据窗体控件的DataObject属性。此属性仅仅能在执行时设定,尽管在用户对象画板中也提供了设置该属性的地方,但这好像不起作用。以下是一个为管道用户对象设定DataObject的样例:
iuo_pipeline.DataObject="p_copy_employee"
数据窗体控件的DataObject属性假设在脚本运行时动态改动,则形成发行文件时,在运行文件里不能包含对应的数据窗体对象。与此类似,数据管道对象也不能包含在运行文件里,而且也不能包含在资源文件pbr中,仅仅能放置到pbd或者dll文件里。
RowsInError:错误记录数
Long类型,表示管道执行时已经发生的错误数。该值肯定不会大于管道画板中定义的MaxErrors的取值。
RowsRead:已经读取的记录数
Long类型,表示管道执行时已经读取的数据记录数。该值肯定不会大于管道画板中Commit中定义的取值。
RowsWritten:已经成功写入的记录数
Long类型,表示已经写入到数据库中的数据记录数
Syntax:管道对象的语法
该属性也是一个非常重要的属性,它体现了管道的所有定义,在某种程度上能够把它用做一个管道。利用该属性能够构造出通用性非常强的数据管道,由于能够使用Mid,Pos,Len,Left和Right等字符串处理函数改动数据管道Syntax的语法,以适应程序执行时的情况。
能够选择管道用户对象 —> 右键:Edit Source查看语法
事件:
除了两个标准事件constructor和Destructor之外,还有三个数据管道用户对象所特有的事件,它们是PipeStart,PipeMeter和PipeEnd。这三个事件分别在管道运行时、运行期间和运行结束后触发。通常使用这三个事件和管道的某些属性来反映运行进度。
PipeStart事件在调用管道函数Start()或者Repair()之后触发。PipeMeter事件在提交某个事务处理之后触发,这一般是在处理的记录数达到Commit值规定的数时,PipeEnd事件在函数Start或者Repair的运行过程终止时触发。
函数:
Start:
pipelineobject.Start(sourcetrans,destinationtrans,errordatawindow{,arg1,arg2,...,argn } )
当中,pipelineobject为管道用户对象类型变量,在运行该函数之前它的DataObject属性有明白的取值;sourcetrans为联接源库的事务对象,destinationtrans是用来联接目标库的事务对象,这两个事务对象在此之前都应该和对应的库正确建立了联接;当管道运行时假设错误发生,它的错误信息显示在errordatawindow数据窗体控件中。没有必要为该控件指明数据窗体对象,即使指明在显示错误信息时该数据窗体对象也被替换。前面这三个变量是必需要指明的,否则该函数无法正常工作。后面的变量依据数据管道是否定义了检索变量而定。假设数据管道定义了检索变量,arg1,arg2,...,argn要指定,而且变量的个数和检索变量的个数同样,而且对应的类型同样。假设管道对象定义了检索变量,而在Start函数中没有提供对应的值,在管道运行时系统会弹出对话框,要求用户输入检索变量。函数运行时的返回值情况比較复杂,例如以下所看到的:
返回值 含义
1 函数运行成功
-1 管道打开失败
-2 列太多
-3 目标表已经存在
-4 目标表不存在
-5 联结错误
-6 检索变量错误
-7 列不匹配
-8 源中有致命的SQL错误
-9 目标中有致命的SQL错误
-10 超出了最大的错误数
-12 表语法错误
-13 没有提供必须的主键
-15 管道操作已经进行
-16 源数据库中有错误
-17 目标数据库中有错误
-18 目标数据库是仅仅读的
Repair:
在脚本中运行管道,错误发生后必须进行一定的处理。Repair函数就是在管道运行错误发生后应该运行的。
发生错误后,错误信息及错误数据显示在Start函数errordatawindow变量指定的数据窗体控件中。用户在改动错误后能够再次提交数据,这时调用Repair函数。这相当于在数据管道画板中发生错误后使用Painter Bar中的小图标buttonUpdate DB,或者使用菜单项Design->Update Database。
pipelineobject.Repair ( destinationtrans )
当中,pipelineobject是管道用户对象类型变量,在运行该函数之前它的DataObject属性有明白的取值;destinationtrans是和目标库建立联接的事务对象。函数的返回值也比較复杂,例如以下所看到的:
返回值 含义
1 函数运行成功
-5 联结错误
-9 目标中有致命的SQL错误
-10 超出了最大的错误数
-11 无效的窗体句柄
-12 表语法错误
-15 管道操作已经进行
-17 目标数据库中有错误
-18 目标数据库是仅仅读的
Cancel:
该函数能够终止正在运行的管道,在用户要强制退出某数据管道时能够调用该函数。
pipelineobject.Cancel()
函数正确运行返回1,否则返回-1。
执行数据管道
在数据画板中直接执行
使用菜单项Design -> Execute或者PainterBar中的Execute小图标button来执行当前的数据管道。管道执行过程中,假设出现错误信息,应该依据错误信息改动管道的定义,然后又一次执行。
假设为提取源表数据指定了检索变量,则在运行时要求用户输入取值,然后使用该值检索源数据窗体中符合该条件的数据。假设未定义检索參数,则直接从源表中读取数据。
在程序中运行管道
需例如以下步骤:
创建相关对象
和源目标数据库建立联接
创建数据管道,并设置其相关属性
运行管道,并处理各种异常。
在脚本中使用数据管道,须要创建三个对象:数据管道对象、数据管道用户对象以及一个保存错误信息的数据窗体对象,当中数据窗体对象是在管道执行错误时由系统自己主动创建的,数据管道对象在数据管道画板中创建,数据管道用户对象在Standard Class用户对象中创建。
PB数据管道的更多相关文章
- 五年双十一:SLS数据管道发展之路
日志服务SLS是一款飞天团队自研产品,服务云上云下3W+客户,并在阿里经济体中作为日志数据的基础设施,在过去几年中经历多次双十一.双十二.新春红包锤炼.在2019双十一中: 服务阿里经济体3W+ 应用 ...
- Kafka笔记7(构建数据管道)
构建数据管道需要考虑的问题: 及时性 可靠性 高吞吐量和动态吞吐量 数据格式 转换 安全性 故障处理能力 耦合性与灵活性 数据管道的构建分为2个阵营,ETL和ELT ETL:提取- ...
- pb数据导出
pb数据导出(一) 1.在窗口新建用户事件 ue_export 2.事件调用函数 gf_dw_to_excel(THIS.dw_dict) 3.写函数 :boolean lb_setborde ...
- SSIS 数据流的执行树和数据管道
数据流组件的设计愿景是快速处理海量的数据,为了实现该目标,SSIS数据源引擎需要创建执行树和数据管道这两个数据结构,而用户为了快速处理数据流,必须知道各个转换组件的阻塞性,充分利用流式处理流程,利用更 ...
- Apache Beam实战指南 | 大数据管道(pipeline)设计及实践
Apache Beam实战指南 | 大数据管道(pipeline)设计及实践 mp.weixin.qq.com 策划 & 审校 | Natalie作者 | 张海涛编辑 | LindaAI 前 ...
- 【tensorflow2.0】数据管道dataset
如果需要训练的数据大小不大,例如不到1G,那么可以直接全部读入内存中进行训练,这样一般效率最高. 但如果需要训练的数据很大,例如超过10G,无法一次载入内存,那么通常需要在训练的过程中分批逐渐读入. ...
- 「视频小课堂」Logstash如何成为镇得住场面的数据管道(文字版)
视频地址 B站视频地址:Logstash如何成为镇得住场面的数据管道 公众号视频地址:Logstash如何成为镇得住场面的数据管道 知乎视频地址:Logstash如何成为镇得住场面的数据管道 内容 首 ...
- Kafka连接器建立数据管道
1.概述 最近,有同学留言咨询Kafka连接器的相关内容,今天笔者给大家分享一下Kafka连接器建立数据管道的相关内容. 2.内容 Kafka连接器是一种用于Kafka系统和其他系统之间进行功能扩展. ...
- pb数据窗口设置操作
1 使DataWindow列只能追加不能修改如何使DataWindow中的数据只能追加新记录而不能修改,利用 Column 的 Protect 属性可以很方便的做到这一点,方法如下:将每一列的 Pro ...
随机推荐
- ios 面试题 经典(比较全) 根据重点总结
史上最全的iOS面试题及答案 1.写一个NSString类的实现 + (id)initWithCString:(c*****t char *)nullTerminatedCString encodin ...
- Qt 5.2.0 和 VS 2012集成
下载两个安装包,后面一个add-in是必需的 Qt 5.2.0 for Windows 64-bit (VS 2012, 590 MB) (Info) Visual Studio Add-in 1.2 ...
- .NET参数化Oracle查询参数
最近在做数据库移植工作(SqlServer 2008 -> Oracle 11g),遇到一些不兼容的问题,以下是一个参数化方面的区别,资料来自其他网友,在此整理了一下. public stati ...
- PHP中magic_quotes_gpc和 magic_quotes_runtime区别及其反斜线转义问题
php中关于反斜线转义: php中数据的魔法引用函数 magic_quotes_gpc 或 magic_quotes_runtime 设置为on时,当数据遇到 单引号' 和 双引号&quo ...
- 【Cocos2d-X开发学习笔记】第03期:渲染框架之导演类(CCDirector)的使用
本系列学习教程使用的是cocos2d-x-2.1.4版本(截至目前为止最新稳定版) ,PC开发环境Windows7,C++开发环境VS2010 提到“导演”一词,想必读者最先联想到的是电影.作为娱乐产 ...
- COM组件
COM组件 COM component(COM组件)是微软公司为了计算机工业的软件生产更加符合人类的行为方式开发的一种新的软件开发技术.在COM构架下,人们可以开发出各种各样的功能专一的组件,然后 ...
- C# L该系统的应用istView简单的图像浏览器
最近有同学问我怎么用ListView加载图像列表,在...前面"C#系统中的应用"于TreeView+ListView+ContextMenuStrip控件实现树状图显示磁盘文件夹 ...
- Javascript DOM 03 表格添加、删除 + 搜索
获取 tBodies.tHead.tFoot.rows.cells 隔行变色 鼠标移入高亮 添加.删除一行 DOM方法的使用 ...
- LGPL与闭源程序
最近一直在学习 Qt.Qt 有两个许可证:LGPL 和商业协议.这两个协议在现在的 Qt 版本中的代码是完全一致的(潜在含义是,Qt 的早期版本,商业版的 Qt 通常包含有一些开源版本所没有的库,比如 ...
- oracle数据库连接无响应的解决
昨天中午时,查询到服务器的数据流水最晚记录是早上8点的,现场查看服务日志很奇怪,日志输出显示挂死在数据库连接这一步.多次调试无果,随后百度发现有资料显示oracle 10.2.1的版本有登录无响应的B ...