让我们想象一下,我们的应用程序需要从关系数据库到另一个关系数据库的ETL(提取,转换,加载)数据.最简单(和大多数性能,恕我直言)的方式是在数据库之间建立链接并编写简单的存储过程.在这种情况下,我们使用最少的技术和组件,所有功能都是"开箱即用".
但这是SOA(面向服务的架构)的良好实践吗?紧耦合怎么样?我们是否永远将数据库强烈地相互耦合?
还有另一种方法:我们在每一侧构建2个Java应用程序,并通过SOAP Web服务进行通信.这更加SOA友好!但性能下降和额外的失败点值得吗?
在这种情况下,最佳做法是什么?ETL如何适应SOA?
我正在编写一个ETL(在带有mongodb后端的python中)并且想知道:ETL应该被称为ETL的标准函数和工具是什么?
该ETL将尽可能通用,采用可编写脚本的模块化方法.它主要用于保持不同的数据库同步,以及以不同的格式导入/导出数据集(xml和csv)我不需要任何多维工具,但它有可能以后需要它.
假设您有一个小项目,表面看起来像是Talend之类的ETL工具的良好匹配.
但进一步假设,你从未使用Talend,而且,你不相信"视觉编程"工具,而是宁愿用老式的方式编写所有东西(在一个漂亮的IDE上的文本!),并在适当的语言和支持的帮助下库.
有哪些语言模式和支持库可以帮助您远离ETL工具诱惑/陷阱?
从CSV(300万+行)向数据库加载大量数据的最有效方法是什么.
我正在选择使用C#应用程序逐行读取,转换和加载数据?这是理想的,如果没有,我有什么选择?我应该使用多线程吗?
我正在研究数据仓库并寻找使用Python的ETL解决方案.我曾使用过SnapLogic作为ETL,但我想知道是否还有其他解决方案.
这个数据仓库刚刚开始.我还没有带来任何数据.它将很容易超过100演出与我想要加载到它的初始数据子集.
我有一个CSV文件,其中{LF}分隔每行和日期列,日期格式为"12/20/2010"(包括引号)
我的目标列是类型为date(而不是datetime)的SQL Server 2008数据库表
在我的平面文件连接管理器中,我已将日期列配置为数据类型,date [DT_DATE]其中TextQualified设置为true,列分隔符为{LF}(它是每行的最后一列).我将文本限定符设置为"
当我尝试将其加载到OLE目标时,我收到以下错误
[TRN_DORPS [760]]错误:SSIS错误代码DTS_E_OLEDBERROR.发生OLE DB错误.错误代码:0x80004005.OLE DB记录可用.源:"用于SQL Server的Microsoft OLE DB提供程序"Hresult:0x80004005描述:"转换规范的字符值无效.".[TRN_DORPS [760]]错误:输入"OLE DB目标输入"(773)上的输入列""CYCLE_DATE""(874)出错.返回的列状态为:"由于可能丢失数据,无法转换该值."
如果我附加一个数据查看器,管道中的值是2010-12-20 00:00:00.0000000- 这个时间组件是什么导致问题?我尝试剥离时间组件,(DT_DATE)(DT_DBDATE)[CYCLE_DATE]但没有用,因为它在管道中保持不变
如何将第三方库(jar文件)添加到Talend项目?
还有一个问题是,每个Talend component使用LogFactory,但在我的情况下,它是扔
java.lang.NoClassDefFoundError: org.apache.commons.logging.LogFactory
at ...
Run Code Online (Sandbox Code Playgroud)
使用tSetGlobalVar组件,如何利用现有的日志库来摆脱这种异常?
从气流文档:
SubDAGs must have a schedule and be enabled. If the SubDAG’s schedule is set to None or @once, the SubDAG will succeed without having done anything
Run Code Online (Sandbox Code Playgroud)
我知道subagoperator实际上是作为BackfillJob实现的,因此我们必须向schedule_interval运营商提供.但是,有没有办法获得子schedule_interval="@once"标记的语义等价物?我担心如果我使用set schedule_interval="@daily"为子标记,如果子标记运行时间超过一天,则子标记可能会运行多次.
def subdag_factory(parent_dag_name, child_dag_name, args):
subdag = DAG(
dag_id="{parent_dag_name}.{child_dag_name}".format(
parent_dag_name=parent_dag_name, child_dag_name=child_dag_name
),
schedule_interval="@daily", # <--- this bit here
default_args=args
)
... do more stuff to the subdag here
return subdag
Run Code Online (Sandbox Code Playgroud)
TLDR:如何伪造"每次触发父dag只运行一次这个子标记"
我可以在两个服务器之间复制文件,比如手动说服务器A和服务器B,我有权访问任意一侧的文件夹.
我正在使用文件系统任务来复制文件.
当我的源和目标位于服务器中时,包在Visual Studio和SSISDB中工作正常.
当我的源和目标位于不同的服务器中时,包在Visual Studio中工作正常但是SSISDB中的包失败.它说访问被拒绝.我的帐户映射到SSISDB.
有任何想法来解决这个问题.
使用SQL Server代理JoB可以正常运行该程序包.作业通过代理帐户运行.
我们可以通过任何方式将Package配置为通过代理帐户运行.
错误截图