Linux 在将数据导入db2表时,如何将多行或列数据从文本文件连接到一行或一列中
例如: 1) 文件有 2) 数据: 3) 表:Linux 在将数据导入db2表时,如何将多行或列数据从文本文件连接到一行或一列中,linux,shell,db2,sh,db2-luw,Linux,Shell,Db2,Sh,Db2 Luw,例如: 1) 文件有 2) 数据: 3) 表: 表中的列:ID Name Job Hobby Salary 是否可以按如下方式将数据加载到表中: 1-ram-architect-tenniscricketfootbalgardening-20000 2-krish-teacher-paintingcooking-25000 命令:db2“从coldel0x7x keepblanks修改的DEL的ABC.FILE加载客户端替换为tablename(ID、Name、Job、Hobby、sa
表中的列:
ID Name Job Hobby Salary
是否可以按如下方式将数据加载到表中:
1-ram-architect-tenniscricketfootbalgardening-20000
2-krish-teacher-paintingcooking-25000
命令:db2“从coldel0x7x keepblanks修改的DEL的ABC.FILE加载客户端替换为tablename(ID、Name、Job、Hobby、salary)不可恢复”使用
Load CLIENT
或IMPORT
,您无法在一次操作中实现自己想要的目标
你要求去规范化,我想你理解后果
无论如何,您可以使用多步骤方法,首先将其加载/导入到临时表中,然后在丢弃临时表之前,在第二步中使用SQL对最终表进行反规范化
或者,如果您熟悉awk
,并且数据文件已正确排序,则可以在加载/导入之前将文件从外部预处理到数据库
或者使用ETL工具。您可以使用
摄取
命令,而不是加载
。
必须事先使用以下命令为此命令创建相应的基础结构,例如:
CALL SYSINSTALLOBJECTS('INGEST', 'C', 'USERSPACE1', NULL);
随后使用以下命令加载文件:
INGEST FROM FILE ABC.FILE
FORMAT DELIMITED by '|'
(
$id INTEGER EXTERNAL
, $name CHAR(8)
, $job CHAR(20)
, $hobby CHAR(20)
, $salary INTEGER EXTERNAL
, $hobby2 CHAR(20)
)
MERGE INTO tablename
ON ID = $id
WHEN MATCHED THEN
UPDATE SET hobby = hobby CONCAT $hobby CONCAT $hobby2
WHEN NOT MATCHED THEN
INSERT (ID, NAME, JOB, HOBBY, SALARY) VALUES($id, $name, $job, $hobby CONCAT $hobby2, $salary);
请在您的问题中添加您的努力(以代码的形式),这是非常受鼓励的,谢谢。问题到底是什么?加载和导入使用输入文件中的一行作为目标表中的新行。如果需要更多,请搜索ETL。您可以忽略此“-”符号。我只是用它来解释目的。如文件中所述,数据用|分隔,我想用我已经解释过的方法将数据加载到一个普通的db2表中,也就是说,我想结合hobby和hobby2,如果我们有另一行相同的ID,我也想添加这些嗜好,并作为一行加载到表中。如果文件不包含头,该文件不能包含任何头,该怎么办标题。$variables由您使用任何您喜欢的命名进行分配。它们的数量和类型必须与文件内容兼容。调用SYSINSTALLOBJECTS('inset','C','USERSPACE1',NULL);请您解释一下这些参数中指定的C、USERSPACE1和null是什么,请参见Db2文档中的描述。
CALL SYSINSTALLOBJECTS('INGEST', 'C', 'USERSPACE1', NULL);
INGEST FROM FILE ABC.FILE
FORMAT DELIMITED by '|'
(
$id INTEGER EXTERNAL
, $name CHAR(8)
, $job CHAR(20)
, $hobby CHAR(20)
, $salary INTEGER EXTERNAL
, $hobby2 CHAR(20)
)
MERGE INTO tablename
ON ID = $id
WHEN MATCHED THEN
UPDATE SET hobby = hobby CONCAT $hobby CONCAT $hobby2
WHEN NOT MATCHED THEN
INSERT (ID, NAME, JOB, HOBBY, SALARY) VALUES($id, $name, $job, $hobby CONCAT $hobby2, $salary);