繁体   English   中英

在 Notepad++ 和 Informatica 中转换以下源文件。 查看给定的源表和我想要的 Output 表

[英]Convert Below Source File in Notepad++ & Informatica. See the Given Source Table & Output Table I Want

源数据 -

Cust_Id,Cust_Name,Cust_Address,Cust_Salary
1,Name1,Address,12,Road,40,10000
2,Name2,Addressline,2,15,20000
  1. 第一个场景,我想像下面这样转换这个平面文件并使用 Informatica Powercenter 发送到目标表 (Oracle)。
  2. 第二个场景,我想用 Pipe 分隔替换前两列逗号(Cust_Id,CustName)并保留地址列值中的逗号如何在 Notepad++ 中仅替换前两列逗号。
  3. 第三个场景,我想转换这个相同的源平面文件并实现与 Unix 中的第二个场景相同的逻辑。
  4. 第四种场景,在Oracle中为这个场景编写查询,并在单独的、单独的列中显示结果。 例如:- 在 Oracle 中需要 Output
客户编号 客户名称 地址 薪水
1个 姓名1 地址40号路12号 10000

在 Informatica 和记事本中需要 output ++

Cust_Id,Cust_Name,Cust_Address|Cust_Salary
1|Name1|Address,12,Road,40|10000
2|Name2|Addressline,2,15|20000

使用表达式转换从一列创建 3 列。 读取单列中的数据。

in_inp_data
out_Cust_Id = substr(in_inp_data,1, instr(in_inp_data,','))
var_length_cust_name= instr(in_inp_data,',',2) - instr(in_inp_data,',') -1
out_Cust_name =  substr(in_inp_data,instr(in_inp_data,',')+2,var_length_cust_name)
out_Cust_Address = substr(in_inp_data, instr(in_inp_data,',',2)+1)
Cust_Salary = substr(in_inp_data, instr(in_inp_data,',',-1))

解释 - 1,Name1,Address,12,Road,40,10000 substr(in_inp_data,1, instr(in_inp_data,',')) - 这会产生1 ,因为它将第一个字符剪切到第一个逗号 1。
substr(in_inp_data,instr(in_inp_data,',')+2,var_length_cust_name) - 这会产生Name1 ,因为它将第一个逗号之后的字符串剪切到名称的长度。

substr(in_inp_data, instr(in_inp_data,',',-1)) - 这会从字符串末尾提取第一个逗号之前的最后一个字符串,即薪水。

第四种场景答案(Oracle/SQL Developer)

表结构

Create Table Cust_Data
(Input_Data Varchar2(255));
            
Insert Into Cust_Data Values ('1,Name1,Address,12,Road,40,10000');
Insert Into Cust_Data Values ('2,Name2,Addressline,2,15,20000');
            
Select * From Cust_Data;

句法

Select
  Substr (Input_Data, 1,
  Instr(Input_Data,',')-1) Cust_Id,
  Substr (Input_Data,
  Instr (Input_Data, ',', 1) +1,
  Instr(Input_Data,',', 1, 2) - Instr(Input_Data,',')-1) Cust_Name,
  Substr (Input_Data,
  Instr (Input_Data, ',', 1, 2) +1,
  Instr(Input_Data,',', -1, 1)- Instr (Input_Data, ',', 1, 2)-1) Cust_Address,
  Substr (Input_Data,
  Instr (Input_Data, ',', -1, 1) +1 ) Salary
From Cust_Data;

第一个场景答案 (Informatica Powercenter)

Expression Transformation
in_Input_Data (nstring)
out_Cust_Id (integer) = SUBSTR (in_Input_Data,1, INSTR (in_Input_Data,','))
var_Length_Cust_Name (integer) = INSTR(in_Input_Data,',',1, 2) - INSTR(in_Input_Data,',') -1
out_Cust_Name (nstring) =  SUBSTR(in_Input_Data,INSTR(in_Input_Data,',', 1)+1,v_Length_Cust_Name)
out_Cust_Address (nstring) = SUBSTR(in_Input_Data,INSTR(in_Input_Data,',',1, 2)+1)
Cust_Salary (Double) = SUBSTR(in_Input_Data,INSTR(in_Input_Data,',',-1,1)+1)

将所有此 Output 端口链接到目标。

第二个场景答案(Notepad++)

  1. 打开记事本++
  2. Ctrl + H按钮。
  3. 查找区域中: ^(.+?),(.+?),(.+),(.+?)$
  4. 替换为区域: $1|$2|$3|$4
  5. Select环绕
  6. Select正则表达式
  7. 然后单击全部替换

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM