填充SQL数据库(Oracle)时,如何将字段连接到单个字段中
我需要将一批数据从一个单独的程序插入到一个表中(在OracleSQLDeveloper中)。这种数据传输将是单向的,这意味着系统只是偶尔会在表中转储一堆数据,替换以前的数据。因此,我不必担心能够更新单个字段。我也无法修改这个系统如何将数据传输到我的表中,这意味着我必须将其字段映射到我的列标题(它只是在幕后使用填充SQL数据库(Oracle)时,如何将字段连接到单个字段中,sql,oracle,triggers,concatenation,Sql,Oracle,Triggers,Concatenation,我需要将一批数据从一个单独的程序插入到一个表中(在OracleSQLDeveloper中)。这种数据传输将是单向的,这意味着系统只是偶尔会在表中转储一堆数据,替换以前的数据。因此,我不必担心能够更新单个字段。我也无法修改这个系统如何将数据传输到我的表中,这意味着我必须将其字段映射到我的列标题(它只是在幕后使用INSERTs发送数据) 我希望该表有一个唯一的TRANSACTION\u ID列。但是,每个TRANSACTION\u ID可能有多个TRANSACTION\u类型s,因此对于每个ID,我
INSERT
s发送数据)
我希望该表有一个唯一的TRANSACTION\u ID
列。但是,每个TRANSACTION\u ID
可能有多个TRANSACTION\u类型
s,因此对于每个ID,我将收到多行不同的TRANSACTION\u类型
。e、 g:
INSERT INTO TEST_TABLE (TRANSACTION_ID, TRANSACTION_TYPE) VALUES (1000, TT35)
INSERT INTO TEST_TABLE (TRANSACTION_ID, TRANSACTION_TYPE) VALUES (1000, TT40)
INSERT INTO TEST_TABLE (TRANSACTION_ID, TRANSACTION_TYPE) VALUES (1000, TT12)
INSERT INTO TEST_TABLE (TRANSACTION_ID, TRANSACTION_TYPE) VALUES (1001, TT12)
......etc.
我想将它们连接到一个由逗号分隔的字段中,因此最终的表如下所示:
TRANSACTION_ID TRANSACTION_TYPES
-----------------------------------------
1000 TT35,TT40,TT12
1001 TT12
1002 TT40,TT23
我意识到这是数据的非标准化,但因为我不需要更新数据,所以我并不过分担心
我知道这样做的方法通常是使用合并
,但由于我被源系统的插入
操作卡住了,所以我无法使用它。是否可以使用触发器执行此操作?我在以前的尝试中遇到了变异表错误等
最后一种方法可能是将事务类型
存储在一个单独的表中,处理数据,然后删除第二个表,但这似乎过于复杂了
有没有一种我不知道的直截了当的方法
谢谢评论太长了 你也许可以用扳机,但我不推荐。触发器需要替换插入,有时执行插入,有时连接值 还有两个选择。首先,将数据加载到一个临时表中,然后创建一个新的表来支持您的流程
第二种方法是忽略问题,在查询数据时使用
list\u agg()
将数据汇集在一起 这条评论太长了
你也许可以用扳机,但我不推荐。触发器需要替换插入,有时执行插入,有时连接值
还有两个选择。首先,将数据加载到一个临时表中,然后创建一个新的表来支持您的流程
第二种方法是忽略问题,在查询数据时使用
list\u agg()
将数据汇集在一起 但是会有第三方使用这些数据,所以我真的需要以他们需要的格式向他们展示这些数据。我认为依靠他们使用特定的查询不是一个好主意。暂存表建议与我描述的类似吗?@MDalt。你可以将数据加载到一个表中,然后用你想要的格式创建一个视图或物化视图。不过,使用数据的将是第三方,所以我真的需要以他们需要的格式向他们展示数据。我认为依靠他们使用特定的查询不是一个好主意。暂存表建议与我描述的类似吗?@MDalt。可以将数据加载到表中,然后使用所需格式的数据创建视图或物化视图。