版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据集成工具:Informatica:数据映射与转换技术1数据集成概述1.1数据集成的重要性在当今数据驱动的商业环境中,数据集成变得至关重要。它涉及将来自不同来源的数据合并到一个统一的视图中,以支持业务决策、报告和分析。数据集成的重要性在于:提高数据质量:通过消除重复、纠正错误和填充缺失值,确保数据的准确性和一致性。增强决策制定:提供全面的数据视图,帮助决策者基于更完整的信息做出决策。优化业务流程:通过自动化数据处理,减少手动操作,提高效率和减少错误。支持合规性:确保数据符合行业标准和法规要求,如GDPR或HIPAA。1.2数据集成工具的分类数据集成工具可以分为几类,每类都有其特定的功能和应用场景:ETL工具:Extract(提取)、Transform(转换)、Load(加载)工具,用于从多个源提取数据,转换数据格式,然后加载到目标系统中。ELT工具:与ETL类似,但转换步骤在目标系统中进行,通常利用目标系统的计算能力。数据虚拟化工具:提供数据的实时视图,无需物理移动数据,适用于需要快速访问数据的场景。数据复制工具:用于在不同系统之间复制数据,保持数据的实时同步。数据治理工具:帮助管理数据质量、数据安全和数据合规性。1.3Informatica在数据集成中的角色Informatica是一款领先的数据集成工具,它在数据集成领域扮演着关键角色。Informatica提供了强大的ETL功能,能够处理大量数据,支持复杂的数据转换和清洗。它还具备以下特点:广泛的连接器:支持连接到各种数据源,包括数据库、文件系统、云存储和SaaS应用。图形化界面:提供直观的拖放界面,简化数据映射和转换的设计过程。高性能处理:利用并行处理和优化算法,实现快速的数据加载和转换。数据质量工具:内置数据清洗和验证功能,确保数据的准确性和一致性。2数据映射与转换技术2.1数据映射数据映射是数据集成过程中的关键步骤,它定义了源数据和目标数据之间的关系。在Informatica中,数据映射是通过映射设计器完成的,它允许用户定义数据流、转换规则和数据类型。2.1.1示例假设我们有以下源数据和目标数据结构:源数据(CSV文件)SourceIDFirstNameLastNameAgeEmail1JohnDoe302JaneSmith目标数据(数据库表)IDFull_NameAgeEmail在Informatica中,数据映射可能如下所示:SourceID->ID
FirstName+""+LastName->Full_Name
Age->Age
Email->Email2.1.2描述在这个例子中,我们从CSV文件中提取数据,并将其转换为数据库表的格式。SourceID直接映射到ID,FirstName和LastName通过连接操作映射到Full_Name,Age和Email字段直接映射。2.2数据转换数据转换是将数据从一种格式或结构转换为另一种的过程。在Informatica中,数据转换可以包括数据类型转换、数据清洗、数据聚合和数据格式化等操作。2.2.1示例假设我们需要将年龄字段从字符串转换为整数,并且需要处理缺失的电子邮件字段。Informatica代码示例TRANSFORMAge
WHENAgeISNOTNULLTHENTO_INTEGER(Age)
ELSENULL
ENDTRANSFORM
TRANSFORMEmail
WHENEmailISNULLTHEN"unknown@"
ELSEEmail
ENDTRANSFORM2.2.2描述在这个例子中,我们使用Informatica的转换功能来处理数据。Age字段通过TO_INTEGER函数从字符串转换为整数,如果源数据中的Age字段为空,则转换结果为NULL。对于Email字段,如果源数据中没有提供电子邮件,则使用默认值unknown@填充。通过这些转换,我们可以确保数据在加载到目标系统之前,格式和类型都符合要求,同时处理了数据中的缺失值,提高了数据质量。2.3结论Informatica作为一款强大的数据集成工具,通过其数据映射和转换技术,能够有效地处理复杂的数据集成需求。它不仅提供了图形化的界面简化设计过程,还具备高性能的数据处理能力和内置的数据质量工具,是企业级数据集成项目的理想选择。3Informatica基础3.1Informatica平台介绍Informatica是一种领先的数据集成工具,用于在不同的数据源之间进行高效的数据迁移和转换。它提供了一套全面的解决方案,包括数据集成、数据质量管理、数据治理、主数据管理等,帮助企业实现数据的统一管理和利用。Informatica的核心产品是PowerCenter,它是一个强大的ETL(Extract,Transform,Load)工具,用于从各种数据源提取数据,进行清洗、转换和加载到目标系统中。3.1.1平台特点高性能:利用并行处理和优化算法,Informatica能够处理大量数据,提供高速的数据集成服务。灵活性:支持多种数据源,包括关系数据库、文件、云存储、大数据平台等,能够满足不同场景的数据集成需求。易用性:提供图形化的界面,使得数据映射和转换的定义变得直观和简单。可扩展性:通过模块化设计,可以轻松扩展功能,如增加数据质量检查、主数据管理等。3.2PowerCenter组件详解InformaticaPowerCenter由多个组件构成,每个组件都扮演着特定的角色,共同完成数据集成任务。3.2.1PowerCenterDesignerPowerCenterDesigner是用于设计和开发映射、工作流和工作项的工具。它提供了一个图形化的界面,开发人员可以使用拖放功能来创建数据映射,定义数据转换规则。示例:创建映射--示例:从源表提取数据并加载到目标表
--假设源表为src_customers,目标表为tgt_customers
--定义源表和目标表的字段映射
--src_customers:customer_id,first_name,last_name
--tgt_customers:id,name,surname
--在Designer中创建映射,将src_customers的字段映射到tgt_customers的相应字段
--使用表达式转换处理数据类型不匹配的情况
--例如:将src_customers的customer_id转换为tgt_customers的id,可能需要类型转换3.2.2PowerCenterRepositoryManagerRepositoryManager用于管理PowerCenter的所有元数据,包括映射、工作流、工作项、连接信息等。它是一个中心化的存储库,确保所有开发人员和管理员可以访问和更新相同的元数据。3.2.3PowerCenterIntegrationServiceIntegrationService是PowerCenter的执行引擎,负责执行映射和工作流。它可以在多个服务器上部署,以实现负载均衡和高可用性。3.2.4PowerCenterWorkflowMonitorWorkflowMonitor提供了一个监控界面,用于监控工作流的执行状态。管理员可以使用它来查看任务的进度、错误和警告信息,以及进行任务的控制,如启动、暂停和停止任务。3.3数据集成生命周期理解数据集成生命周期是指数据从源系统到目标系统的整个过程,包括数据的提取、转换、加载、验证和监控等阶段。3.3.1数据提取(Extract)在数据集成的初始阶段,数据从源系统中被提取出来。这可能涉及到从数据库、文件、云存储或大数据平台中读取数据。3.3.2数据转换(Transform)提取的数据可能需要进行转换,以适应目标系统的要求。这包括数据清洗、数据类型转换、数据格式调整等。例如,可能需要将日期格式从“MM/DD/YYYY”转换为“YYYY-MM-DD”。示例:数据类型转换--示例:将日期字段从MM/DD/YYYY转换为YYYY-MM-DD
--假设源表中的日期字段为dob,格式为MM/DD/YYYY
--在映射中使用表达式转换
--EXPRESSION:IIF(ISNULL(dob),NULL,TO_DATE(TO_CHAR(dob,'MM/DD/YYYY'),'YYYY-MM-DD'))
--这个表达式首先检查dob字段是否为空,如果为空则返回NULL,否则使用TO_DATE和TO_CHAR函数进行格式转换3.3.3数据加载(Load)转换后的数据被加载到目标系统中。这可能涉及到将数据写入数据库、文件或云存储等。3.3.4数据验证(Validate)加载到目标系统中的数据需要进行验证,确保数据的完整性和准确性。这可能包括数据校验、数据一致性检查等。3.3.5数据监控(Monitor)在整个数据集成过程中,需要对任务的执行状态进行监控,以确保数据集成的顺利进行。这包括监控任务的进度、错误和警告信息,以及进行任务的控制。通过理解数据集成的生命周期,企业可以更好地规划和管理数据集成项目,确保数据的高质量和高效率传输。4数据映射基础4.1数据映射的概念数据映射是数据集成过程中的核心步骤,它定义了源系统数据如何转换和加载到目标系统中。在Informatica中,数据映射是通过图形化界面完成的,允许用户直观地连接源字段到目标字段,同时应用各种转换规则。数据映射不仅包括字段之间的简单映射,还可以包含复杂的业务逻辑和数据清洗规则,确保数据在传输过程中的准确性和一致性。4.2源到目标数据映射流程4.2.1步骤1:定义源和目标在开始数据映射之前,首先需要定义数据的来源和目标。这通常涉及到创建源和目标的连接,选择正确的数据库类型或文件格式,并指定连接的详细信息,如服务器地址、数据库名称、用户名和密码。4.2.2步骤2:创建映射在Informatica中,映射是通过拖放源字段到目标字段来创建的。映射设计器提供了一个可视化界面,用户可以在此界面中进行操作。除了简单的字段映射,还可以在映射中添加转换,如表达式、过滤器、排序和聚合等。4.2.3步骤3:应用转换转换是数据映射中的关键部分,用于处理数据,使其符合目标系统的要求。例如,可能需要将源系统中的日期格式从“MM/DD/YYYY”转换为“YYYY-MM-DD”。这可以通过在映射中添加一个表达式转换来实现,如下所示:--InformaticaExpressionTransformation示例
ExpressionTransformation:
IF(ISNULL(SOURCE_DATE)ORSOURCE_DATE="")THEN
TARGET_DATE=NULL;
ELSE
TARGET_DATE=TO_DATE(SOURCE_DATE,"MM/DD/YYYY");
ENDIF;4.2.4步骤4:验证映射在映射设计完成后,需要进行验证,确保所有字段都正确映射,转换规则无误。Informatica提供了映射验证工具,可以检查映射的语法和逻辑错误。4.2.5步骤5:执行映射最后,映射需要在工作流中执行,将数据从源系统加载到目标系统。在执行前,可能还需要设置工作流的参数,如批处理大小、错误处理规则等。4.3映射设计最佳实践4.3.1实践1:使用适当的转换确保使用正确的转换类型来处理数据。例如,使用表达式转换进行数据格式转换,使用过滤器转换来排除不需要的数据,使用排序和聚合转换来处理数据的排序和汇总需求。4.3.2实践2:保持映射的可读性映射设计应清晰、有条理,便于他人理解和维护。使用有意义的命名,对复杂的转换添加注释,保持映射的整洁。4.3.3实践3:优化性能在设计映射时,考虑性能因素。避免不必要的转换,减少数据的读写次数,使用并行处理和分区策略来提高数据加载速度。4.3.4实践4:错误处理设计映射时,应考虑错误处理策略。定义错误记录和重试机制,确保数据加载过程中的异常能够被妥善处理,不影响数据的完整性和准确性。4.3.5实践5:测试和验证在映射设计完成后,进行充分的测试和验证,确保数据映射和转换规则的正确性。使用测试数据集,检查数据的转换结果,确保与预期一致。通过遵循这些最佳实践,可以确保Informatica的数据映射和转换过程既高效又准确,满足数据集成项目的需求。5数据转换技术5.1数据转换的类型在数据集成项目中,数据转换是关键步骤,用于调整数据以满足目标系统的要求。Informatica提供了多种数据转换类型,包括但不限于:查找转换:基于输入数据查找数据库中的信息,用于数据的丰富或验证。表达式转换:使用表达式语言来创建新的字段或修改现有字段。过滤器转换:根据指定条件过滤记录。排序转换:对数据行进行排序。聚合转换:对数据进行汇总,如计算平均值、总和等。更新策略转换:用于更新或插入目标表中的记录。直通转换:不修改数据,仅用于数据流的重新定向。5.2使用表达式转换数据5.2.1原理表达式转换允许用户使用Informatica的表达式语言来创建或修改字段。这包括算术运算、字符串操作、日期和时间函数等。表达式转换可以用于数据清洗、格式化、计算新值等场景。5.2.2示例假设我们有一个包含员工信息的数据集,其中salary字段需要根据员工的job_title进行调整。以下是一个使用Informatica表达式转换的例子:--创建一个表达式转换
TRANSFORMATIONExpression
NAME"Salary_Adjustment"
SOURCE_FIELDS"job_title","salary"
TARGET_FIELDS"adjusted_salary"
--表达式定义
IFjob_title=="Manager"THENsalary*1.1
ELSEIFjob_title=="Engineer"THENsalary*1.05
ELSEsalary
END在这个例子中,我们定义了一个表达式转换Salary_Adjustment,它根据job_title字段的值来调整salary字段。如果job_title是”Manager”,则salary增加10%;如果是”Engineer”,则增加5%;其他职位则保持不变。5.2.3数据样例输入数据样例:job_titlesalaryManager5000Engineer4000Analyst3000输出数据样例:job_titlesalaryadjusted_salaryManager50005500Engineer40004200Analyst300030005.3高级数据转换技巧5.3.1原理高级数据转换技巧涉及更复杂的逻辑和数据处理,如使用用户自定义函数(UDF)、处理大型数据集的性能优化、以及使用复杂的条件和循环结构。5.3.2示例使用用户自定义函数(UDF)在某些情况下,标准的表达式可能不足以满足特定的业务需求。Informatica允许用户创建和使用自定义函数来扩展其转换能力。例如,假设我们需要一个函数来计算员工的税后工资,我们可以定义一个UDF:--创建一个UDF
DEFINEFUNCTIONCalculate_Tax
PARAMETERSsalary
BEGIN
RETURNsalary*0.9;
END;然后在表达式转换中使用这个UDF:TRANSFORMATIONExpression
NAME"Tax_Adjustment"
SOURCE_FIELDS"salary"
TARGET_FIELDS"after_tax_salary"
--使用UDF
Calculate_Tax(salary)性能优化处理大型数据集时,性能优化至关重要。一种方法是使用Informatica的分区特性,将数据转换任务分割成更小的、并行处理的块。例如,我们可以根据job_title字段对数据进行分区:TRANSFORMATIONPartition
NAME"Job_Title_Partition"
SOURCE_FIELDS"job_title"
PARTITION_COUNT3这将数据集分成三部分,每部分根据不同的job_title进行处理,从而提高整体处理速度。5.3.3数据样例输入数据样例:salary500040003000输出数据样例:salaryafter_tax_salary500045004000360030002700以上内容详细介绍了数据转换技术在Informatica中的应用,包括不同类型的数据转换、如何使用表达式转换数据,以及一些高级数据转换技巧。通过这些技术,可以有效地处理和准备数据,以满足各种数据集成需求。6映射与转换实践6.1创建简单数据映射在Informatica中,数据映射是数据集成流程的核心,它定义了源数据如何转换为目标数据。创建简单数据映射涉及以下步骤:打开PowerCenterDesigner:启动InformaticaPowerCenterDesigner,这是创建映射的主要工具。创建映射:在Designer中,选择File>New>Mapping来创建一个新的映射。添加源和目标:从Repository中拖拽源和目标到映射画布上。源可以是数据库表、平面文件等,目标可以是数据库表、平面文件或数据仓库。连接源和目标:使用SourceQualifier从源中读取数据,然后使用Target将数据写入目标。在源和目标之间,可以添加Expression、Aggregator、Filter等转换来处理数据。定义转换:在Expression转换中,可以定义字段的计算逻辑。例如,如果需要将源表中的salary字段乘以1.1来计算目标表中的adjusted_salary字段,可以使用以下表达式:adjusted_salary=salary*1.1保存映射:完成映射设计后,保存映射并将其部署到Informatica服务器上进行测试和执行。6.2使用过滤器和排序6.2.1过滤器过滤器(Filter)转换用于在数据流中选择特定的记录。例如,如果只想要处理salary大于50000的记录,可以在映射中添加一个Filter转换,并使用以下条件:IFsalary>50000THEN
PASS;
ELSE
DISCARD;
ENDIF;6.2.2排序排序(Sorter)转换用于对数据流中的记录进行排序。例如,如果需要按last_name字段对员工记录进行排序,可以在映射中添加一个Sorter转换,并设置last_name为排序字段。6.3实现复杂数据转换在处理复杂的数据转换时,Informatica提供了多种工具和转换类型,如Aggregator、Joiner、Router等,以满足不同的数据处理需求。6.3.1AggregatorAggregator转换用于对数据进行聚合操作,如求和、平均值、最大值等。例如,如果需要计算每个部门的总工资,可以使用以下聚合表达式:GROUPBYdepartment_id;
SUM(salary)AStotal_salary;6.3.2JoinerJoiner转换用于将来自不同源的数据流连接在一起。例如,如果需要将员工表和部门表连接,以获取每个员工的部门信息,可以使用Joiner转换,并设置department_id为连接字段。6.3.3RouterRouter转换用于根据条件将数据流路由到不同的目标。例如,如果需要将salary大于50000的员工记录写入high_salary_employees表,而将其他记录写入low_salary_employees表,可以使用Router转换,并设置以下条件:IFsalary>50000THEN
ROUTETOhigh_salary_employees;
ELSE
ROUTETOlow_salary_employees;
ENDIF;通过这些步骤和转换,可以创建和实现复杂的数据映射与转换,以满足数据集成项目中的各种需求。在实际操作中,需要根据具体的数据源和目标,以及数据处理逻辑,灵活运用这些转换,以达到最佳的数据处理效果。7性能优化与调试7.1优化数据映射性能在使用Informatica进行数据集成时,数据映射的性能直接影响到数据转换和加载的速度。以下是一些关键的策略,用于优化数据映射性能:7.1.1使用适当的转换类型选择合适的转换:例如,使用Aggregator转换进行聚合操作,而不是在Expression转换中编写聚合逻辑,可以提高性能。避免不必要的转换:减少数据流中的转换数量,特别是那些不增加业务价值的转换。7.1.2数据过滤尽早过滤数据:在数据流的早期阶段使用Filter转换,可以减少后续转换处理的数据量,从而提高性能。7.1.3数据类型优化使用最小的数据类型:确保字段的数据类型与实际需求相匹配,避免使用过大的数据类型,减少内存使用和处理时间。7.1.4并行处理启用并行执行:在工作流中启用并行执行,可以同时处理多个数据流,显著提高处理速度。7.1.5优化连接操作使用连接优化器:Informatica的连接优化器可以自动选择最佳的连接算法,如NestedLoop、HashJoin或SortMergeJoin,以提高连接操作的性能。7.1.6预览和测试预览数据映射:在实际运行前预览数据映射,检查数据流和转换的逻辑,确保没有错误或不必要的步骤。7.2调试数据转换问题调试数据转换问题对于确保数据映射的准确性和性能至关重要。以下是一些调试技巧:7.2.1使用断点设置断点:在数据映射中设置断点,可以逐行检查数据流,观察数据在转换过程中的变化。7.2.2查看日志详细日志:启用详细日志记录,可以查看每个转换的执行情况,包括处理的行数、错误信息等。7.2.3错误处理错误输出:配置错误输出,将不符合规则的数据行输出到单独的文件或表中,便于后续分析。7.2.4性能监控监控工具:使用Informatica的性能监控工具,如PerformanceMonitor,来分析数据映射的执行时间和资源使用情况。7.3常见错误与解决方案在使用Informatica进行数据映射和转换时,可能会遇到一些常见的错误。了解这些错误及其解决方案对于快速解决问题至关重要。7.3.1数据类型不匹配错误描述:当源数据类型与目标数据类型不匹配时,可能会导致转换失败。解决方案:使用Derivative或Expression转换来调整数据类型,确保与目标表的字段类型一致。7.3.2数据量过大导致内存溢出错误描述:处理大量数据时,如果内存分配不足,可能会遇到内存溢出错误。解决方案:增加工作流的内存分配,或者优化数据映射,减少数据在内存中的驻留时间,如使用Aggregator的GroupBy功能来减少数据量。7.3.3数据转换逻辑错误错误描述:数据转换后的结果与预期不符,可能是转换逻辑错误。解决方案:仔细检查数据映射中的转换逻辑,使用断点和预览功能来验证每个转换的输出。7.3.4示例:数据类型调整--假设源表`source_table`中的`date_field`字段类型为VARCHAR,目标表`target_table`中的`date_field`字段类型为DATE。
--使用Informatica的Expression转换,将VARCHAR类型的日期转换为DATE类型。
--InformaticaExpression转换代码示例
Expression:
IIF(ISNULL(date_field),NULL,TO_DATE(date_field,"YYYY-MM-DD"))7.3.5示例:数据过滤--假设需要从`source_table`中筛选出`status`字段值为'Active'的记录。
--InformaticaFilter转换代码示例
Filter:
status=='Active'通过遵循上述策略和技巧,可以显著提高Informatica数据映射的性能,同时确保数据转换的准确性和可靠性。8案例研究与最佳实践8.1零售行业数据集成案例8.1.1背景在零售行业中,数据集成是关键的业务流程之一,它涉及从多个来源(如销售点系统、库存管理系统、客户关系管理系统等)收集数据,并将其整合到一个中心数据仓库中,以支持数据分析和决策制定。使用Informatica进行数据集成,可以确保数据的准确性和一致性,同时提高数据处理的效率。8.1.2Informatica数据映射在Informatica中,数据映射是定义数据如何从源系统转换到目标系统的过程。以下是一个示例,展示如何使用InformaticaPowerCenter进行数据映射,以整合来自不同销售点系统的销售数据。数据源销售点系统A:包含SalesA表,字段为ProductID、StoreID、Quantity、SaleDate。销售点系统B:包含SalesB表,字段为ProductCode、BranchID、SoldUnits、TransactionDate。目标表数据仓库:Sales表,字段为ProductID、StoreID、UnitsSold、SaleDate。映射步骤创建映射:在InformaticaPowerCenter中创建一个新的映射。源定义:定义两个源系统A和B的连接,选择SalesA和SalesB表作为源。目标定义:定义数据仓库的连接,选择Sales表作为目标。转换:使用转换器将ProductCode转换为ProductID,将BranchID转换为StoreID,并合并Quantity和SoldUnits字段为UnitsSold。连接:使用连接器将源系统A和B的数据连接到目标表Sales。运行映射:在Informatica中运行映射,将数据从源系统加载到数据仓库。代码示例--InformaticaSQLTransformation
SELECT
CASE
WHENSource='SalesA'THENSalesA.ProductID
WHENSource='SalesB'THENSalesB.ProductCode
ENDASProductID,
CASE
WHENSource='SalesA'THENSalesA.StoreID
WHENSource='SalesB'THENSalesB.BranchID
ENDASStoreID,
CASE
WHENSource='SalesA'THENSalesA.Quantity
WHENSource='SalesB'THENSalesB.SoldUnits
ENDASUnitsSold,
CASE
WHENSource='SalesA'THENSalesA.SaleDate
WHENSource='SalesB'THENSalesB.TransactionDate
ENDASSaleDate
FROM
(SELECT*FROMSalesAUNIONALLSELECT*FROMSalesB)ASSourceTable
WHERE
SourceTable.SourceISNOTNULL;8.1.3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年城市基础设施建设合同(含道路、桥梁)
- 2024年工程项目协调合同集
- 2024年工程量更新与补充合同
- 2024年小微企业贷款合同
- 2024年大连联合体环保涂料研发生产合同
- 2024年工程中介安全保障协议
- 2024年工程监理招标协议
- 2024年亚洲区域航空运输合作协议
- 2024年可再生能源项目BOOT模式的合同安排
- 2024年宁波短期租房协议
- 社会经济热点-贫富差距专题
- 初创企业财务管理计划书
- 供配电工程及配套设施 投标方案(技术方案)
- AI技术在智能旅游中的应用
- 100ml生理盐水的配制讲解
- 财产损害谅解书
- 如何预防生锈医疗器械
- 2024年半包装修合同Word模板(特殊条款版)
- 反洗钱:非自然人客户信息登记表
- 学前教育教研工作计划与目标
- pvc卷材楼地面施工工艺
评论
0/150
提交评论