kettle学习总结(1)

1,kettle下载

        kettle本身是Java开发的开源项目,由于某种原因,目前官网已经不支持下载了,可到我的CSDN中下载

        下载完后,还需要安装JDK环境以及对应的数据库驱动包,需要注意的是 该kettle的版本较低,如果你是用的 mysql数据库,需要下载 5.4.7以下的驱动包,下载地址参照以下:

MySQL :: Download Connector/J

2,一切准备就绪后就可以开始使用啦

假设现在有一个场景:需要将本地的所有库同步到目标服务器上对应的数据库中

其中涉及到 数据表的自动创建 以及 数据的自动同步,这里以全量同步为例。

实现步骤分为三大块:定义一个入口 任务,该任务中涵盖 start、库表初始化(删除表及数据)、全量同步、结束

3,main 任务脚本内容

<?xml version="1.0" encoding="UTF-8"?>
<job><name>main</name><description /><extended_description /><job_version /><directory>/</directory><created_user>-</created_user><created_date>2024/06/03 09:54:18.592</created_date><modified_user>-</modified_user><modified_date>2024/06/03 09:54:18.592</modified_date><parameters></parameters><slaveservers></slaveservers><job-log-table><connection /><schema /><table /><size_limit_lines /><interval /><timeout_days /><field><id>ID_JOB</id><enabled>Y</enabled><name>ID_JOB</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>JOBNAME</id><enabled>Y</enabled><name>JOBNAME</name></field><field><id>STATUS</id><enabled>Y</enabled><name>STATUS</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>STARTDATE</id><enabled>Y</enabled><name>STARTDATE</name></field><field><id>ENDDATE</id><enabled>Y</enabled><name>ENDDATE</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>DEPDATE</id><enabled>Y</enabled><name>DEPDATE</name></field><field><id>REPLAYDATE</id><enabled>Y</enabled><name>REPLAYDATE</name></field><field><id>LOG_FIELD</id><enabled>Y</enabled><name>LOG_FIELD</name></field><field><id>EXECUTING_SERVER</id><enabled>N</enabled><name>EXECUTING_SERVER</name></field><field><id>EXECUTING_USER</id><enabled>N</enabled><name>EXECUTING_USER</name></field><field><id>START_JOB_ENTRY</id><enabled>N</enabled><name>START_JOB_ENTRY</name></field><field><id>CLIENT</id><enabled>N</enabled><name>CLIENT</name></field></job-log-table><jobentry-log-table><connection /><schema /><table /><timeout_days /><field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>JOBNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>JOBENTRYNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>RESULT</id><enabled>Y</enabled><name>RESULT</name></field><field><id>NR_RESULT_ROWS</id><enabled>Y</enabled><name>NR_RESULT_ROWS</name></field><field><id>NR_RESULT_FILES</id><enabled>Y</enabled><name>NR_RESULT_FILES</name></field><field><id>LOG_FIELD</id><enabled>N</enabled><name>LOG_FIELD</name></field><field><id>COPY_NR</id><enabled>N</enabled><name>COPY_NR</name></field></jobentry-log-table><channel-log-table><connection /><schema /><table /><timeout_days /><field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>LOGGING_OBJECT_TYPE</id><enabled>Y</enabled><name>LOGGING_OBJECT_TYPE</name></field><field><id>OBJECT_NAME</id><enabled>Y</enabled><name>OBJECT_NAME</name></field><field><id>OBJECT_COPY</id><enabled>Y</enabled><name>OBJECT_COPY</name></field><field><id>REPOSITORY_DIRECTORY</id><enabled>Y</enabled><name>REPOSITORY_DIRECTORY</name></field><field><id>FILENAME</id><enabled>Y</enabled><name>FILENAME</name></field><field><id>OBJECT_ID</id><enabled>Y</enabled><name>OBJECT_ID</name></field><field><id>OBJECT_REVISION</id><enabled>Y</enabled><name>OBJECT_REVISION</name></field><field><id>PARENT_CHANNEL_ID</id><enabled>Y</enabled><name>PARENT_CHANNEL_ID</name></field><field><id>ROOT_CHANNEL_ID</id><enabled>Y</enabled><name>ROOT_CHANNEL_ID</name></field></channel-log-table><pass_batchid>N</pass_batchid><shared_objects_file /><entries><entry><name>START</name><description /><type>SPECIAL</type><start>Y</start><dummy>N</dummy><repeat>N</repeat><schedulerType>0</schedulerType><intervalSeconds>0</intervalSeconds><intervalMinutes>60</intervalMinutes><hour>12</hour><minutes>0</minutes><weekDay>1</weekDay><DayOfMonth>1</DayOfMonth><parallel>N</parallel><draw>Y</draw><nr>0</nr><xloc>176</xloc><yloc>208</yloc></entry><entry><name>同步aav</name><description /><type>TRANS</type><specification_method>filename</specification_method><trans_object_id /><filename>${Internal.Entry.Current.Directory}/sync_aav.ktr</filename><transname /><arg_from_previous>N</arg_from_previous><params_from_previous>N</params_from_previous><exec_per_row>N</exec_per_row><clear_rows>N</clear_rows><clear_files>N</clear_files><set_logfile>N</set_logfile><logfile /><logext /><add_date>N</add_date><add_time>N</add_time><loglevel>Basic</loglevel><cluster>N</cluster><slave_server_name /><set_append_logfile>N</set_append_logfile><wait_until_finished>Y</wait_until_finished><follow_abort_remote>N</follow_abort_remote><create_parent_folder>N</create_parent_folder><logging_remote_work>N</logging_remote_work><run_configuration>Pentaho local</run_configuration><parameters><pass_all_parameters>Y</pass_all_parameters></parameters><parallel>N</parallel><draw>Y</draw><nr>0</nr><xloc>640</xloc><yloc>48</yloc></entry><entry><name>初始化所有表</name><description /><type>JOB</type><specification_method>filename</specification_method><job_object_id /><filename>${Internal.Entry.Current.Directory}/init.kjb</filename><jobname /><arg_from_previous>N</arg_from_previous><params_from_previous>N</params_from_previous><exec_per_row>N</exec_per_row><set_logfile>N</set_logfile><logfile /><logext /><add_date>N</add_date><add_time>N</add_time><loglevel>Nothing</loglevel><slave_server_name /><wait_until_finished>Y</wait_until_finished><follow_abort_remote>N</follow_abort_remote><expand_remote_job>N</expand_remote_job><create_parent_folder>N</create_parent_folder><pass_export>N</pass_export><parameters><pass_all_parameters>Y</pass_all_parameters></parameters><set_append_logfile>N</set_append_logfile><parallel>N</parallel><draw>Y</draw><nr>0</nr><xloc>352</xloc><yloc>208</yloc></entry><entry><name>DUMMY</name><description /><type>SPECIAL</type><start>N</start><dummy>Y</dummy><repeat>N</repeat><schedulerType>0</schedulerType><intervalSeconds>0</intervalSeconds><intervalMinutes>60</intervalMinutes><hour>12</hour><minutes>0</minutes><weekDay>1</weekDay><DayOfMonth>1</DayOfMonth><parallel>N</parallel><draw>Y</draw><nr>0</nr><xloc>928</xloc><yloc>208</yloc></entry><entry><name>同步aps</name><description /><type>TRANS</type><specification_method>filename</specification_method><trans_object_id /><filename>${Internal.Entry.Current.Directory}/sync_aps.ktr</filename><transname /><arg_from_previous>N</arg_from_previous><params_from_previous>N</params_from_previous><exec_per_row>N</exec_per_row><clear_rows>N</clear_rows><clear_files>N</clear_files><set_logfile>N</set_logfile><logfile /><logext /><add_date>N</add_date><add_time>N</add_time><loglevel>Basic</loglevel><cluster>N</cluster><slave_server_name /><set_append_logfile>N</set_append_logfile><wait_until_finished>Y</wait_until_finished><follow_abort_remote>N</follow_abort_remote><create_parent_folder>N</create_parent_folder><logging_remote_work>N</logging_remote_work><run_configuration>Pentaho local</run_configuration><parameters><pass_all_parameters>Y</pass_all_parameters></parameters><parallel>N</parallel><draw>Y</draw><nr>0</nr><xloc>640</xloc><yloc>128</yloc></entry><entry><name>同步douban</name><description /><type>TRANS</type><specification_method>filename</specification_method><trans_object_id /><filename>${Internal.Entry.Current.Directory}/sync_douban.ktr</filename><transname /><arg_from_previous>N</arg_from_previous><params_from_previous>N</params_from_previous><exec_per_row>N</exec_per_row><clear_rows>N</clear_rows><clear_files>N</clear_files><set_logfile>N</set_logfile><logfile /><logext /><add_date>N</add_date><add_time>N</add_time><loglevel>Basic</loglevel><cluster>N</cluster><slave_server_name /><set_append_logfile>N</set_append_logfile><wait_until_finished>Y</wait_until_finished><follow_abort_remote>N</follow_abort_remote><create_parent_folder>N</create_parent_folder><logging_remote_work>N</logging_remote_work><run_configuration>Pentaho local</run_configuration><parameters><pass_all_parameters>Y</pass_all_parameters></parameters><parallel>N</parallel><draw>Y</draw><nr>0</nr><xloc>640</xloc><yloc>208</yloc></entry><entry><name>同步sp-dev</name><description /><type>TRANS</type><specification_method>filename</specification_method><trans_object_id /><filename>${Internal.Entry.Current.Directory}/sync_sp-dev.ktr</filename><transname /><arg_from_previous>N</arg_from_previous><params_from_previous>N</params_from_previous><exec_per_row>N</exec_per_row><clear_rows>N</clear_rows><clear_files>N</clear_files><set_logfile>N</set_logfile><logfile /><logext /><add_date>N</add_date><add_time>N</add_time><loglevel>Basic</loglevel><cluster>N</cluster><slave_server_name /><set_append_logfile>N</set_append_logfile><wait_until_finished>Y</wait_until_finished><follow_abort_remote>N</follow_abort_remote><create_parent_folder>N</create_parent_folder><logging_remote_work>N</logging_remote_work><run_configuration>Pentaho local</run_configuration><parameters><pass_all_parameters>Y</pass_all_parameters></parameters><parallel>N</parallel><draw>Y</draw><nr>0</nr><xloc>640</xloc><yloc>368</yloc></entry><entry><name>同步lottery</name><description /><type>TRANS</type><specification_method>filename</specification_method><trans_object_id /><filename>${Internal.Entry.Current.Directory}/sync_lottery.ktr</filename><transname /><arg_from_previous>N</arg_from_previous><params_from_previous>N</params_from_previous><exec_per_row>N</exec_per_row><clear_rows>N</clear_rows><clear_files>N</clear_files><set_logfile>N</set_logfile><logfile /><logext /><add_date>N</add_date><add_time>N</add_time><loglevel>Basic</loglevel><cluster>N</cluster><slave_server_name /><set_append_logfile>N</set_append_logfile><wait_until_finished>Y</wait_until_finished><follow_abort_remote>N</follow_abort_remote><create_parent_folder>N</create_parent_folder><logging_remote_work>N</logging_remote_work><run_configuration>Pentaho local</run_configuration><parameters><pass_all_parameters>Y</pass_all_parameters></parameters><parallel>N</parallel><draw>Y</draw><nr>0</nr><xloc>640</xloc><yloc>288</yloc></entry></entries><hops><hop><from>START</from><to>初始化所有表</to><from_nr>0</from_nr><to_nr>0</to_nr><enabled>Y</enabled><evaluation>Y</evaluation><unconditional>Y</unconditional></hop><hop><from>初始化所有表</from><to>同步aav</to><from_nr>0</from_nr><to_nr>0</to_nr><enabled>Y</enabled><evaluation>Y</evaluation><unconditional>N</unconditional></hop><hop><from>同步aav</from><to>DUMMY</to><from_nr>0</from_nr><to_nr>0</to_nr><enabled>Y</enabled><evaluation>Y</evaluation><unconditional>N</unconditional></hop><hop><from>初始化所有表</from><to>同步douban</to><from_nr>0</from_nr><to_nr>0</to_nr><enabled>Y</enabled><evaluation>Y</evaluation><unconditional>N</unconditional></hop><hop><from>初始化所有表</from><to>同步lottery</to><from_nr>0</from_nr><to_nr>0</to_nr><enabled>Y</enabled><evaluation>Y</evaluation><unconditional>N</unconditional></hop><hop><from>初始化所有表</from><to>同步sp-dev</to><from_nr>0</from_nr><to_nr>0</to_nr><enabled>Y</enabled><evaluation>Y</evaluation><unconditional>N</unconditional></hop><hop><from>初始化所有表</from><to>同步aps</to><from_nr>0</from_nr><to_nr>0</to_nr><enabled>Y</enabled><evaluation>Y</evaluation><unconditional>N</unconditional></hop><hop><from>同步aps</from><to>DUMMY</to><from_nr>0</from_nr><to_nr>0</to_nr><enabled>Y</enabled><evaluation>Y</evaluation><unconditional>N</unconditional></hop><hop><from>同步douban</from><to>DUMMY</to><from_nr>0</from_nr><to_nr>0</to_nr><enabled>Y</enabled><evaluation>Y</evaluation><unconditional>N</unconditional></hop><hop><from>同步lottery</from><to>DUMMY</to><from_nr>0</from_nr><to_nr>0</to_nr><enabled>Y</enabled><evaluation>Y</evaluation><unconditional>N</unconditional></hop><hop><from>同步sp-dev</from><to>DUMMY</to><from_nr>0</from_nr><to_nr>0</to_nr><enabled>Y</enabled><evaluation>Y</evaluation><unconditional>N</unconditional></hop></hops><notepads></notepads><attributes><group><name>METASTORE.pentaho</name><attribute><key>Default Run Configuration</key><value>{"namespace":"pentaho","id":"Default Run Configuration","name":"Default Run Configuration","description":"Defines a default run configuration","metaStoreName":null}</value></attribute></group><group><name>{"_":"Embedded MetaStore Elements","namespace":"pentaho","type":"Default Run Configuration"}</name><attribute><key>Pentaho local</key><value>{"children":[{"children":[],"id":"server","value":null},{"children":[],"id":"clustered","value":"N"},{"children":[],"id":"name","value":"Pentaho local"},{"children":[],"id":"description","value":null},{"children":[],"id":"readOnly","value":"Y"},{"children":[],"id":"sendResources","value":"N"},{"children":[],"id":"logRemoteExecutionLocally","value":"N"},{"children":[],"id":"remote","value":"N"},{"children":[],"id":"local","value":"Y"},{"children":[],"id":"showTransformations","value":"N"}],"id":"Pentaho local","value":null,"name":"Pentaho local","owner":null,"ownerPermissionsList":[]}</value></attribute></group></attributes>
</job>

4,kettle.properties变量

名称	值
local_ip	localhost
local_user	root
password	123456
schemeName_aav	aav
schemeName_aav1	aav1
schemeName_aps	aps
schemeName_aps1	aps1
schemeName_douban	douban
schemeName_douban1	douban1
schemeName_lottery	lottery
schemeName_lottery1	lottery1
schemeName_sp-dev	sp-dev
schemeName_sp-dev1	sp-dev1

5,在使用组件时,经常会遇到一个问题:数据库中某个值设置的是非null,在同步数据时,起始源数据库的表字段值为空字符串,在进入到kettle中时会默认编程null,这时直接同步会报错,需要更改kettle的配置变量。

        kettle.properties -》KETTLE_EMPTY_STRING_DIFFERS_FROM_NULL=Y

更改后需要重启kettle

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/848101.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

惠海H6212L 48V转12V 36V转12V 24V转5V DCDC降压恒压模块供电芯片方案

内置60V高压MOS&#xff1a;H6212L内置了60V耐压的MOS&#xff0c;这使得它能够承受48V的输入电压&#xff0c;从而适应更多的电源环境。 宽电压输入范围&#xff1a;支持8V至48V的宽压输入范围&#xff0c;满足了不同应用场景的电源需求。 输出电压可调&#xff1a;支持输出…

旺店通·企业奇门对接打通金蝶云星空查询盘点盈亏统计接口与其他入库新增接口

旺店通企业奇门对接打通金蝶云星空查询盘点盈亏统计接口与其他入库新增接口 对接系统旺店通企业奇门 慧策最先以旺店通ERP切入商家核心管理痛点——订单管理&#xff0c;之后围绕电商经营管理中的核心管理诉求&#xff0c;先后布局流量获取、会员管理、仓库管理等其他重要经营模…

计算机图形学实验9 RayBounding Valume求交和 BVH查找

计算机图形学实验9 RayBounding Valume求交和 BVH查找 Github地址 RBV,BVH参考文章 前言 光线追踪的基本流程 像素网格生成&#xff1a;首先&#xff0c;我们需要为最终的图像建立一个二维像素网格。每个像素代表屏幕上的一个点&#xff0c;我们的目标是计算出这个点应该显…

重庆耶非凡科技人力rpo蓝海项目能不能做?

随着市场经济的不断发展和企业对人才需求的日益增长&#xff0c;人力资源外包(HRO)已成为众多企业优化资源配置、提升管理效率的重要手段。其中&#xff0c;招聘流程外包(RPO)作为HRO的重要组成部分&#xff0c;更是凭借其专业性和高效性受到了广泛关注。在此背景下&#xff0c…

idea2024年最新激活码,即拿即用

1、Idea2024年最新激活码 idea2024年最新激活码&#xff0c;即拿即用 K384HW36OB-eyJsaWNlbnNlSWQiOiJLMzg0SFczNk9CIiwibGljZW5zZWVOYW1lIjoibWFvIHplZG9uZyIsImxpY2Vuc2VlVHlwZSI6IlBFUlNPTkFMIiwiYXNzaWduZWVOYW1lIjoiIiwiYXNzaWduZWVFbWFpbCI6IiIsImxpY2Vuc2VSZXN0cmljdG…

linux业务代码性能优化点

planning优化的一些改动----------> 减少值传递&#xff0c;多用引用来传递 <---------- // ----------> 减少值传递&#xff0c;多用引用来传递 <---------- // 例1&#xff1a; class A{}; std::vector<A> v; // for(auto elem : v) {} // 不建议&#xff…

HiWoo Cloud物联网云平台

在科技日新月异的今天&#xff0c;物联网&#xff08;IoT&#xff09;已经成为推动社会进步的重要力量。而物联网云平台&#xff0c;作为连接万物、实现智能交互的核心&#xff0c;更是备受瞩目。今天&#xff0c;就让我们一起走进HiWoo Cloud的世界&#xff0c;探寻这款物联网…

云计算中网络虚拟化的核心组件——NFV、NFVO、VIM与VNF

NFV NFV&#xff08;Network Functions Virtualization&#xff0c;网络功能虚拟化&#xff09;&#xff0c;是一种将传统电信网络中的网络节点设备功能从专用硬件中解耦并转换为软件实体的技术。通过运用虚拟化技术&#xff0c;NFV允许网络功能如路由器、防火墙、负载均衡器、…

学习axios拦截器

axios拦截器的作用&#xff1a;用于在请求发送前和响应返回后对请求和响应进行统一处理&#xff0c;例如添加公共请求头、处理请求参数、统一处理错误信息等。拦截器提供了一种灵活、高效的方式来管理HTTP请求和响应&#xff0c;帮助在前端开发中更好地处理数据交互。 这是一个…

YY2/BUB3轴通过调节染色体不稳定性促进SAC过度激活并抑制结直肠癌进展

引用信息 文 章&#xff1a;YY2/BUB3 Axis promotes SAC Hyperactivation and Inhibits Colorectal Cancer Progression via Regulating Chromosomal Instability. 期 刊&#xff1a;Advanced Science&#xff08;影响因子&#xff1a;15.1&#xff09; 发表时间&#…

外文文献下载阅读工具有哪些?

下载和阅读外文文献的工具有很多&#xff0c;其中一些常用的工具包括&#xff1a; Google 学术&#xff1a;可以通过 Google 学术搜索引擎查找和下载大量的学术文献&#xff0c;包括英文文献。 ResearchGate&#xff1a;一个学术交流平台&#xff0c;提供了许多学术论文的下载…

关于vue开发的几个问题

vue前端代码放置了几个月时间&#xff0c;再开发发现一些版本或者配置的问题&#xff0c;记录下来。 一、yarn add总报错certificate has expired 尝试了各种办法&#xff0c;更新或重装yarn&#xff08;npm install --global yarn&#xff09;&#xff0c;清除缓存&#xff…

揭秘业务系统数据安全三大核心问题:“谁在用”、“用什么”和“怎么用”

数据库宛如一座坚固的宝库&#xff0c;守护着无尽的智慧与财富—数据&#xff0c;如同熠熠生辉的金币。当宝库的门紧闭时&#xff0c;金币得以安然无恙。 然而&#xff0c;在业务系统的广阔天地中&#xff0c;这些数据金币被精心挑选、流通使用&#xff0c;每一枚都承载着无尽…

Master-Worker 架构的灰度发布难题

作者&#xff1a;石超 一、前言 Master-Worker 架构是成熟的分布式系统设计模式&#xff0c;具有集中控制、资源利用率高、容错简单等优点。我们数据中心内的几乎所有分布式系统都采用了这样的架构。 &#xfeff; 我们曾经发生过级联故障&#xff0c;造成了整个集群范围的服…

晶科能源分享:晶科移动化建设实践和思考

下文为晶科能源IT总监朱元伟的演讲全文&#xff1a; 大家好。我是晶科能源IT的负责人。晶科能源是一个新能源公司&#xff0c;我们主要的业务有两个&#xff0c;太阳能业务&#xff0c;和储能业务。这两年公司发展比较快&#xff0c;大约是在2023年&#xff0c;公司业绩重回了光…

个人课设---玩家血条(包括攻击掉血,复活重生功能)

血条UI操作 渲染模式改为世界空间 导入面板组件并通过画布调整大小 在面板上导入文本组件&#xff0c;显示玩家名称&#xff08;旧版&#xff09; 为了使血条填满&#xff0c;Fill Area 数值全部置为0 改变背景颜色和填充物颜色&#xff0c;并设置血条方向 改变数值方便计算 …

7 - 产品销售分析 I(高频 SQL 50 题基础版)

7- 产品销售分析 I select product_name,year,price from Sales left join Product on Sales.product_id Product.product_id;

窗口重叠之鼠标事件透传

目的 Qt webview在下层展示url&#xff0c;上层覆盖最小化等按钮&#xff0c;支持大小拖拽&#xff0c;窗口移动。 如下图&#xff0c;除红框部分&#xff0c;其余异形部分作为url展示区 构想 想要实现该效果&#xff0c;需要在webview窗口上方动态创建两个窗口&#xff0c;…

四川古力未来科技抖音小店创新经营,引领电商新潮流

在数字化浪潮的推动下&#xff0c;电商行业蓬勃发展&#xff0c;抖音小店作为新兴的电商平台&#xff0c;正以其独特的魅力和优势吸引着越来越多的消费者。四川古力未来科技&#xff0c;作为抖音小店的经营者之一&#xff0c;凭借其可靠的经营模式和创新的经营理念&#xff0c;…

医用腕带朔源用的条形码与二维码如何选择

在医疗环境中的医用腕带作为患者身份识别和管理的重要工具&#xff0c;做为条形码和二维码腕带上的溯源技术&#xff0c;更是为患者信息快速获取、准确传递的保障&#xff0c;实现更加高效和准确的患者身份识别和管理&#xff0c;这种技术可以大大提高医疗服务的效率和质量&…