活动介绍
file-type

SSIS脚本指南:OLEDB/ODBC目标脚本快速更新法

下载需积分: 50 | 43KB | 更新于2025-05-16 | 198 浏览量 | 1 下载量 举报 收藏
download 立即下载
根据给定的文件信息,我们可以挖掘以下知识点: ### 标题知识点 **SSIS基本OLEDB / ODBC目标脚本** 1. **SSIS概念**:SSIS是SQL Server Integration Services的缩写,是微软SQL Server数据库中用于实现数据集成和数据转换任务的工具。它提供了数据抽取、转换和加载(ETL)功能,广泛用于数据仓库建设和数据迁移。 2. **OLEDB与ODBC技术**:OLEDB(对象链接与嵌入数据库)和ODBC(开放数据库连接)是两种不同的数据库访问技术。OLEDB是一种更为现代的技术,提供了访问不同数据源的能力,并且能够处理如XML、HTML等非关系型数据。ODBC是较早的技术,主要用于访问关系型数据库,通过驱动程序与数据库进行交互。 3. **目标脚本**:在SSIS中,目标脚本通常指的是在数据流任务的结束环节,用于写入数据到目标系统或文件的一段程序代码。它允许更灵活的数据处理和定制化写入逻辑。 ### 描述知识点 **简单的目标脚本可与子查询一起使用做更新** 1. **子查询**:在SQL中,子查询是指嵌套在另一个查询内部的查询语句。它可以用于WHERE子句、SELECT子句或FROM子句中。在目标脚本的上下文中,子查询可用于选择需要更新的数据集。 2. **数据更新操作**:在数据整合过程中,数据更新是一个常见的操作,它可以是基于条件的更新。目标脚本支持使用子查询配合更新操作,意味着能够利用子查询选出的数据集来进行更新。例如,可能需要根据子查询的结果来更新数据库中的某些记录。 ### 标签知识点 **SQL, VBScript, Windows, SQL-Server-2005, SQL-CE, SQL-Server, SQL-server-2000, Dev, DBA** 1. **SQL**:结构化查询语言(SQL)是用于管理和操作关系型数据库的标准编程语言。它包括数据查询、更新、插入和删除等操作。 2. **VBScript**:VBScript是一种轻量级、基于对象的脚本语言,微软公司开发,通常用于客户端或服务器端的小型脚本任务。它与Visual Basic有一定的相似性,但功能更有限。 3. **Windows**:指代微软的Windows操作系统,是大多数SQL Server数据库部署的平台。了解Windows操作系统对于管理和维护SQL Server数据库是必要的。 4. **SQL Server版本**:涉及多个SQL Server的不同版本,包括SQL Server 2005, SQL Server 2000, SQL Server Compact Edition(SQL-CE)。每个版本的SQL Server都可能有不同的特性和功能差异,了解这些不同版本的特性对于维护和开发SSIS包是很重要的。 5. **Dev**:代表开发人员(Developer),强调数据库相关开发活动,如编写脚本、程序和过程。 6. **DBA**:数据库管理员(Database Administrator),负责维护和管理数据库的性能、安全性、可用性和完整性。 ### 文件名称列表知识点 **SSIS-Basic-OLEDB-ODBC-destination-script.pdf** 和 **VB_script.zip** 1. **SSIS脚本文档**:文件名暗示了存在一份关于SSIS操作中使用OLEDB/ODBC目标的脚本文档,这可能是一份说明文档,详细描述了如何配置SSIS包来实现特定的数据操作目标。 2. **VB脚本压缩包**:VB_script.zip表明有一个压缩包包含多个VBScript脚本文件。这些脚本文件可能是各种脚本示例,或者是用于与SSIS配合使用的自定义脚本组件。 综合上述信息,我们可以得到这些关键知识点的详细说明。这些知识点不仅涵盖了SSIS的基本操作和脚本编写,还包括了数据库操作的基础知识,以及对不同数据库技术版本的理解。掌握这些知识点能够帮助开发者更好地在SQL Server平台下进行数据整合和数据转换工作。

相关推荐

filetype

– 定义动态日期范围 DECLARE @EndDate DATE = GETDATE(); DECLARE @StartDate DATE = DATEADD(DAY, -365, @EndDate); – 创建部门临时表 IF OBJECT_ID(‘tempdb…#TEMP_Department’) IS NOT NULL DROP TABLE #TEMP_Department; CREATE TABLE #TEMP_Department (Department nvarchar(20)); INSERT INTO #TEMP_Department EXEC [ZY_P_Get_SAP_Account_to_TempDept]; – 基础销售额计算 IF OBJECT_ID(‘tempdb…#Sales’) IS NOT NULL DROP TABLE #Sales; SELECT T.客户名称, SUM(T.RMB总价) AS 销售额 INTO #Sales FROM [ZY_TB_SALES_Details] T INNER JOIN #TEMP_Department D ON T.综合部门 = D.Department WHERE T.交货日期 BETWEEN @StartDate AND @EndDate AND T.业务体系 = ‘经销体系’ GROUP BY T.客户名称; – 1. 计算总毛利(非项目+项目) IF OBJECT_ID(‘tempdb…#NonProjectProfit’) IS NOT NULL DROP TABLE #NonProjectProfit; SELECT T.客户名称, SUM(T.扣技服后毛利) AS 非项目毛利 INTO #NonProjectProfit FROM [ZY_TB_SALES_Details] T INNER JOIN #TEMP_Department D ON T.综合部门 = D.Department WHERE T.交货日期 BETWEEN @StartDate AND @EndDate AND T.业务体系 = ‘经销体系’ AND T.项目合同YN IS NULL GROUP BY T.客户名称; IF OBJECT_ID(‘tempdb…#ProjectProfit’) IS NOT NULL DROP TABLE #ProjectProfit; SELECT 客户名称, SUM(有效综合毛利RMB) AS 项目毛利 INTO #ProjectProfit FROM ZY_TB_JX_XM_SalesPer_Profit WHERE 交货日期 BETWEEN @StartDate AND @EndDate AND 综合部门 IN (SELECT Department FROM #TEMP_Department) GROUP BY 客户名称; IF OBJECT_ID(‘tempdb…#ProfitScore’) IS NOT NULL DROP TABLE #ProfitScore; SELECT COALESCE(N.客户名称, P.客户名称) AS 客户名称, ISNULL(N.非项目毛利, 0) + ISNULL(P.项目毛利, 0) AS 总毛利, CASE WHEN ISNULL(N.非项目毛利, 0) + ISNULL(P.项目毛利, 0) >= 1000000 THEN 100 WHEN ISNULL(N.非项目毛利, 0) + ISNULL(P.项目毛利, 0) >= 500000 THEN 80 WHEN ISNULL(N.非项目毛利, 0) + ISNULL(P.项目毛利, 0) >= 100000 THEN 60 WHEN ISNULL(N.非项目毛利, 0) + ISNULL(P.项目毛利, 0) >= 10000 THEN 40 WHEN ISNULL(N.非项目毛利, 0) + ISNULL(P.项目毛利, 0) > 0 THEN 20 ELSE 0 END * 0.3 AS 毛利得分 INTO #ProfitScore FROM #NonProjectProfit N FULL OUTER JOIN #ProjectProfit P ON N.客户名称 = P.客户名称; – 2. 计算预收款 IF OBJECT_ID(‘tempdb…#Advance’) IS NOT NULL DROP TABLE #Advance; WITH CTE_OACT AS (SELECT AcctCode, AcctName FROM OACT), CTE_BANK AS ( SELECT DISTINCT Number AS ‘进账单流水号’, BankName AS ‘银行信息’ FROM [WEB_BANKINCOME] UNION ALL SELECT 到帐单流水号 AS ‘进账单流水号’, 银行信息 FROM [ZY_TB_WEB_BANKINCOME_OLD] ), CTE_Result AS ( SELECT T0.CardName AS N’客户名称’, T0.OpenBal AS N’未清金额’, T0.Canceled FROM ORCT T0 INNER JOIN CTE_OACT t3 ON t0.TrsfrAcct = t3.AcctCode LEFT JOIN (SELECT DISTINCT 进账单流水号, 银行信息 FROM CTE_BANK) M0 ON M0.进账单流水号 = T0.U_LSH LEFT JOIN [ZY_VIEW_XM] X0 ON X0.ConCode = T0.U_contractnumber LEFT JOIN OCRD d1 ON d1.CardCode = t0.CardCode WHERE T0.taxdate<= @EndDate AND T0.U_Department IN (‘上海办’,‘生命科学部’,‘分销部’,‘工业部’,‘天津办’,‘基础科研部’,‘沈阳办’,‘烟台办’,‘广州办’,‘成都办’,‘商务部’) ) SELECT [客户名称], SUM(CASE WHEN Canceled = ‘N’ THEN [未清金额] ELSE 0 END) AS 预收款金额 INTO #Advance FROM CTE_Result GROUP BY [客户名称]; – 3. 计算应收款和超期应收款 IF OBJECT_ID(‘tempdb…#OverdueBase’) IS NOT NULL DROP TABLE #OverdueBase; SELECT T.客户名称, T.未收款金额, ISNULL(X.XM_YN, ‘N’) AS 项目合同, T.DN日期 AS 销货日期, T.业务体系 INTO #OverdueBase FROM [ZY_TB_Receivable_Balance_Base] T INNER JOIN #TEMP_Department X0 ON X0.Department = T.综合部门 LEFT JOIN [ZY_VIEW_XM] X ON X.ConCode = T.合同号 WHERE T.业务体系 = ‘经销体系’; – 完整应收款 (用于展示) IF OBJECT_ID(‘tempdb…#TotalReceivable’) IS NOT NULL DROP TABLE #TotalReceivable; SELECT 客户名称, SUM(未收款金额) AS 应收款总额 INTO #TotalReceivable FROM #OverdueBase WHERE 项目合同 = ‘N’ GROUP BY 客户名称; – 超期应收款 (用于得分计算) IF OBJECT_ID(‘tempdb…#Overdue’) IS NOT NULL DROP TABLE #Overdue; SELECT 客户名称, SUM(未收款金额) AS 超期应收款 INTO #Overdue FROM #OverdueBase WHERE 项目合同 = ‘N’ AND DATEDIFF(DAY, 销货日期, @EndDate) >= 180 GROUP BY 客户名称; – 4. 计算库存 – 完整库存 (用于展示) IF OBJECT_ID(‘tempdb…#TotalInventory’) IS NOT NULL DROP TABLE #TotalInventory; SELECT [客户名称], SUM([含税总价RMB]) AS 库存总额 INTO #TotalInventory FROM ( SELECT R0.CardName AS ‘客户名称’, CASE WHEN A0.U_CustomsRate IS NOT NULL THEN CASE WHEN A0.U_Import =‘Y’ AND A0.U_RevisedDuty IS NOT NULL THEN (A0.U_ForeignPrice * A0.U_CustomsRate + ISNULL(A0.U_RevisedDuty,0)) * (A0.U_InputVATRate/100+1) WHEN A0.U_Import =‘Y’ AND A0.U_RevisedDuty IS NULL THEN (A0.U_PriceAfVAT + ISNULL(A0.U_Tariff,0)) * (A0.U_InputVATRate/100+1) ELSE (A0.U_PriceAfVAT + ISNULL(A0.U_Tariff,0)) END * B0.Quantity ELSE CASE WHEN A0.U_Import =‘Y’ THEN (A0.U_PriceAfVAT + ISNULL(A0.U_Tariff,0)) * (A0.U_InputVATRate/100+1) ELSE (A0.U_PriceAfVAT + ISNULL(A0.U_Tariff,0)) END * B0.Quantity END AS ‘含税总价RMB’ FROM OBTN A0 JOIN OIBT B0 ON B0.ItemCode = A0.ItemCode AND B0.BatchNum = A0.DistNumber AND B0.SysNumber = A0.SysNumber LEFT JOIN ORDR R0 ON R0.SupplCode = A0.U_SaleContNo WHERE B0.Quantity > 0 AND R0.CardName IS NOT NULL ) AS SubQuery GROUP BY [客户名称]; – 5. 获取客户主数据 IF OBJECT_ID(‘tempdb…#CustomerMaster’) IS NOT NULL DROP TABLE #CustomerMaster; SELECT CardCode AS 客户编号, CardName AS 客户名称, CASE WHEN UPPER(ISNULL(cntctprsn, ‘’)) = ‘VIP’ THEN ‘VIP’ ELSE ‘’ END AS 客户类型 INTO #CustomerMaster FROM OCRD WHERE Cardtype = ‘C’; – 6. 创建主客户表 IF OBJECT_ID(‘tempdb…#MasterClient’) IS NOT NULL DROP TABLE #MasterClient; SELECT CM.客户编号, CM.客户类型, CM.客户名称, ISNULL(P.总毛利, 0) AS 近期毛利, ISNULL(P.毛利得分, 0) AS 毛利得分, ISNULL(A.预收款金额, 0) AS 预收款金额, ISNULL(R.应收款总额, 0) AS 应收款总额, ISNULL(TI.库存总额, 0) AS 库存总额, ISNULL(O.超期应收款, 0) AS 超期应收款 INTO #MasterClient FROM #CustomerMaster CM LEFT JOIN #ProfitScore P ON CM.客户名称 = P.客户名称 LEFT JOIN #Advance A ON CM.客户名称 = A.客户名称 LEFT JOIN #TotalReceivable R ON CM.客户名称 = R.客户名称 LEFT JOIN #TotalInventory TI ON CM.客户名称 = TI.客户名称 LEFT JOIN #Overdue O ON CM.客户名称 = O.客户名称; – 7. 计算得分 (修复列不明确问题) IF OBJECT_ID(‘tempdb…#Scores’) IS NOT NULL DROP TABLE #Scores; SELECT MC.客户名称, – 明确指定使用#MasterClient表的客户名称 – 预收款得分 (ISNULL(预收款占比得分, 0) + ISNULL(预收款金额得分, 0)) / 2 * 0.2 AS 预收款得分, – 超期应收款得分 (ISNULL(超期占比得分, 100) + ISNULL(超期金额得分, 100)) / 2 * 0.3 AS 超期得分, – 库存得分 CASE WHEN ISNULL(库存占比得分, 100) < ISNULL(库存金额得分, 100) THEN ISNULL(库存占比得分, 100) ELSE ISNULL(库存金额得分, 100) END * 0.2 AS 库存得分 INTO #Scores FROM #MasterClient MC LEFT JOIN #Sales S ON MC.客户名称 = S.客户名称 CROSS APPLY ( SELECT – 预收款得分计算 CASE WHEN 预收款金额 / NULLIF(S.销售额, 0) >= 1 THEN 100 WHEN 预收款金额 / NULLIF(S.销售额, 0) >= 0.5 THEN 75 WHEN 预收款金额 / NULLIF(S.销售额, 0) >= 0.1 THEN 50 WHEN 预收款金额 > 0 THEN 25 ELSE 0 END AS 预收款占比得分, CASE WHEN 预收款金额 >= 1000000 THEN 100 WHEN 预收款金额 >= 500000 THEN 75 WHEN 预收款金额 >= 100000 THEN 50 WHEN 预收款金额 > 0 THEN 25 ELSE 0 END AS 预收款金额得分, – 超期应收款得分计算 CASE WHEN 超期应收款 / NULLIF(S.销售额, 0) >= 1 THEN 0 WHEN 超期应收款 / NULLIF(S.销售额, 0) >= 0.5 THEN 25 WHEN 超期应收款 / NULLIF(S.销售额, 0) >= 0.1 THEN 50 WHEN 超期应收款 > 0 THEN 75 ELSE 100 END AS 超期占比得分, CASE WHEN 超期应收款 >= 1000000 THEN 0 WHEN 超期应收款 >= 500000 THEN 25 WHEN 超期应收款 >= 100000 THEN 50 WHEN 超期应收款 > 0 THEN 75 ELSE 100 END AS 超期金额得分, – 库存得分计算 CASE WHEN 库存总额 / NULLIF(S.销售额, 0) >= 1 THEN 0 WHEN 库存总额 / NULLIF(S.销售额, 0) >= 0.5 THEN 25 WHEN 库存总额 / NULLIF(S.销售额, 0) >= 0.1 THEN 50 WHEN 库存总额 > 0 THEN 75 ELSE 100 END AS 库存占比得分, CASE WHEN 库存总额 >= 1000000 THEN 0 WHEN 库存总额 >= 500000 THEN 25 WHEN 库存总额 >= 100000 THEN 50 WHEN 库存总额 > 0 THEN 75 ELSE 100 END AS 库存金额得分 ) AS Scores; – 8. 汇总最终结果 SELECT MC.客户编号, MC.客户类型, MC.客户名称, ROUND( ISNULL(MC.毛利得分, 0) + ISNULL(S.预收款得分, 0) + ISNULL(S.超期得分, 0) + ISNULL(S.库存得分, 0), 2) AS 用户评级, MC.应收款总额 AS 应收款, MC.预收款金额 AS 预收款, MC.库存总额 AS 专项库存, MC.近期毛利 AS 近期毛利, ‘’ AS 备注2 FROM #MasterClient MC LEFT JOIN #Scores S ON MC.客户名称 = S.客户名称 ORDER BY 用户评级 DESC; – 清理所有临时表 DROP TABLE #Sales, #NonProjectProfit, #ProjectProfit, #ProfitScore, #Advance, #TEMP_Department, #OverdueBase, #Overdue, #CustomerMaster, #MasterClient, #TotalReceivable, #TotalInventory, #Scores; 这个是我目前的代码,现在需要将这个结果利用fdl推到ip:192.168.3.1 3306 id=lpsoft [email protected] database=OrderManage 他的T_Customer表中。具体的字段如下 序号 显示字段 表名 字段名 类型 数据类型 必填 默认值 说明 1 主键Id T_Customer Id 整数数据类型 bigint 是 无 15位的不重复随机整数 1 SAP客户编号 T_Customer S6 文本 varchar(50) 否 无 2 客户名称 T_Customer Name 文本 varchar(50) 否 无 3 电话 T_Customer Phone 文本 varchar(15) 否 无 4 电话2 T_Customer Phone2 文本 varchar(15) 否 无 5 客户类型 T_Customer CustomerTypeCode 下拉:普通/VIP varchar(20) 否 普通=703192237846597 VIP=703192237850693 6 用户评级 T_Customer S5 文本 varchar(50) 否 无 7 应收款 T_Customer S1 文本 varchar(50) 否 无 8 预收款 T_Customer S2 文本 varchar(50) 否 无 9 专项库存 T_Customer S3 文本 varchar(50) 否 无 10 近期毛利 T_Customer S4 文本 varchar(50) 否 无 11 备注 T_Customer Remark 长文本 text 否 无 帮我写个代码完成推送,id例如20250731103042(时间部分) + 7(随机数) → 202507311030427 帮我形成完整的代码

filetype
资源下载链接为: https://pan.quark.cn/s/140386800631 通用大模型文本分类实践的基本原理是,借助大模型自身较强的理解和推理能力,在使用时需在prompt中明确分类任务目标,并详细解释每个类目概念,尤其要突出类目间的差别。 结合in-context learning思想,有效的prompt应包含分类任务介绍及细节、类目概念解释、每个类目对应的例子和待分类文本。但实际应用中,类目和样本较多易导致prompt过长,影响大模型推理效果,因此可先通过向量检索缩小范围,再由大模型做最终决策。 具体方案为:离线时提前配置好每个类目的概念及对应样本;在线时先对给定query进行向量召回,再将召回结果交给大模型决策。 该方法不更新任何模型参数,直接使用开源模型参数。其架构参考GPT-RE并结合相关实践改写,加入上下文学习以提高准确度,还使用BGE作为向量模型,K-BERT提取文本关键词,拼接召回的相似例子作为上下文输入大模型。 代码实现上,大模型用Qwen2-7B-Instruct,Embedding采用bge-base-zh-v1.5,向量库选择milvus。分类主函数的作用是在向量库中召回相似案例,拼接prompt后输入大模型。 结果方面,使用ICL时accuracy达0.94,比bert文本分类的0.98低0.04,错误类别6个,处理时添加“家居”类别,影响不大;不使用ICL时accuracy为0.88,错误58项,可能与未修改prompt有关。 优点是无需训练即可有较好结果,例子优质、类目界限清晰时效果更佳,适合围绕通用大模型api打造工具;缺点是上限不高,仅针对一个分类任务部署大模型不划算,推理速度慢,icl的token使用多,用收费api会有额外开销。 后续可优化的点是利用key-bert提取的关键词,因为核心词语有时比语意更重要。 参考资料包括
weixin_38656064
  • 粉丝: 10
上传资源 快速赚钱