我在这里的第一篇文章,因为我开始了一份新工作,我的旧sql技能已经在测试中了——我也不是以前的高级用户。我相信这里可能已经有一些答案可以回答我的问题,但我仍然有点不熟悉——无论是对论坛还是更高级的sql语法。有些答案也相当古老。还有,请原谅我的语法错误。
不管怎样,如果有人能帮忙的话。
我将收到巨大的列表(.csv或类似的(与数据输入。数据列表将包含类型customerdata的字段(名称、地址等(和类型房地产/物业数据的字段(街道地址、建筑ID等(。
customerdata和propertydata需要放在两个单独的表中。
我的问题是这样的:-这两个表相互依赖,因为在属性中,数据表需要首先用数据填充,这将生成一个唯一的GUID-在填充customerdata表时将再次使用该GUID-将客户连接到正确的属性/房地产。
首先想到的是将所有数据填充到一个临时表中。
但我不太确定如何循环遍历每一行,所以我确保首先填充propertytable,然后使用GUID填充customertable。
- 获取涉及属性数据的数据并填充属性表
- 获取在属性表中生成的唯一GUID
- 获取涉及customerdata的数据并使用正确的GUID填充customer表
- 循环遍历集合的其余部分,直到不再有包含数据的行为止
我看到了一些似乎在我范围内的东西,如事务、游标、输出等,但不确定哪种方法是解决我的挑战的最佳方法?当我这样想的时候,我是不是接近了什么?
编辑:
这些是以.xlsx/.csv格式作为一行的示例字段。此列表中的行数会随时间变化。
- 属性ID
- 物业地址
- 物业建筑ID(仅一个(
- 物业成立日期
- 。。。其他与属性相关的其他字段
- 客户ID
- 客户名称
- 客户地址
- 邮政编码
- 。。。其他与客户相关的其他字段
字段1到5需要首先填充属性表。当填充属性表中的每一行时,它将生成唯一的GUID。然后,字段6到10将用于填充客户表,但也需要使用上面在属性表中创建的相应的唯一GUID来填充。
属性表:
- 属性ID
- 物业地址
- 物业建筑ID(仅一个(
- 物业成立日期
- 。。。其他与属性相关的其他字段
- UNIQUE PROPERTY GUID(在填充表中的每一新行时创建(
客户表:
- UNIQUE PROPERTY GUID
- 客户ID
- 客户名称
- 客户地址
- 邮政编码
- 。。。其他与客户相关的其他字段
我建议您使用临时表。
- 将所有数据加载到暂存/临时表中,并为每一行分配GUID编号
- 将属性详细信息从临时表复制到从临时表获取GUID的属性表
- 将客户详细信息从临时表复制到从临时表中获取GUID的客户表
- 删除暂存表中的数据
一个快速的例子:
INSERT INTO PropertyDetails( GUID, PropertyID, PropertyAddress, ... )
SELECT GUID, PropertyID, PropertyAddress, ...
FROM StagingTable
INSERT INTO CustomertDetails( GUID, CustomerID, CustomerName, ... )
SELECT GUID, PropertyID, PropertyAddress, ...
FROM StagingTable