我们有一个 sybase 数据库,运行我们的用户使用的包含客户端信息的应用程序。
情况是大约 1000 个客户的地址信息已经过时。我们得到了一个包含更新地址信息的 .csv 文件,并被要求更新数据库中的地址。
我已经过滤了 csv 以比较 2 个地址列,并且只显示那些不一样的列。所以我有一个 .csv 文件,其中只包含需要更新地址的客户。
所以想象一下这个客户信息存在于一张桌子上。我们还有唯一的客户 ID 以及客户表上的其他个人信息。
我不是 SQL 专家,所以我对 sql 的查询语法可能有问题,但是有人对我如何为此编写查询有任何建议吗?
就像是,
输入每个 [client_id in .csv column A] [address_info in .csv column B] TO clientAddress.table
这就是我想象它无论如何都会在我脑海中发挥作用的方式。我试着四处寻找,但找不到任何与我的情况相似的人。
USING FILE
子句用于从文件加载数据。列列表显示要从.csv
文件中导入的两列。这是我使用的解决方案。对于此示例,要上传的更新信息位于名为 updatefile.csv 的文件中。该表称为 multi_addresses。数据库中正在更新的文件中的列是地址、地址_2、城市、州等。对我来说效果很好。
更新 multi_addresses, updatefile SET multi_addresses.address=updatefile.address, multi_addresses.address_2=COALESCE(updatefile.address_2, ''), multi_addresses.city=updatefile.city, multi_addresses.state=updatefile.state, multi_addresses.zipcode=updatefile.zipcode WHERE multi_addresses.names_id=updatefile.names_id AND multi_addresses.name_location=updatefile.name_location AND multi_addresses.addr_type=updatefile.addr_type
SELECT multi_addresses.* FROM multi_addresses RIGHT JOIN updatefile ON multi_addresses.names_id=updatefile.names_id AND multi_addresses.addr_type=updatefile.addr_type