基于csv更新SQL表上的空白填充

时间:2018-05-03 17:18:50

标签: sql postgresql

我正在办公室的一个小项目上对我们存储在SQL Server中的客户表以及存储在PostgreSQL中的类似表进行一些清理。基本上我们发现许多客户有一个或多个列有0或空白,需要填写。我们的计划是首先收集0或空白列的所有数据并填写csv,然后以某种方式编写脚本填写每个客户的空白栏。

下面是使用0和空白列查看当前表的示例。关于给定客户需要填写哪一列或哪些列是随机的(我们总是拥有的一件事就是客户的用户名)。

    username    emp_num title      email                  phone 
    -------------------------------------------------------------------
    jsmith      0       Manager    jsmith@somewhere.com 
    kjones      112222  Clerk                             111-222-3333
    wgarcia     0                  wgarcis@domain.com     444-555-6666

我们会用" 0"填写任何内容。使用6位数字,任何空格都会在csv上填写值。

问题是,在我完成了包含所有客户信息的csv之后,我该怎么做:

  1. 将csv加载到SQL中;和
  2. 编写此脚本以将csv文件与现有客户表进行比较,并仅填写缺少的内容? (即0和空白)。
  3. 任何人都可以共享示例SQL查询来帮助我入门吗? (对于PostgreSQL,如何以不同的方式进行处理?)

    TIA, 克里斯

2 个答案:

答案 0 :(得分:0)

将联接更新为正确的客户表,如下所示:

update a 
set a.emp_num=b.emp_num
from currenttable a join customer b on a.username=b.username
where a.emp_num in (0,'')

答案 1 :(得分:0)

据推测,这是一次性任务。您可以使用Excel或其他电子表格应用程序通过一些简单的字符串构建轻松完成此操作。它不会重复使用,但它通常是最快的解决方案。

如果你拥有大量的客户,那说它不会起作用,但它可以解决几千个问题。

Excel公式

="UPDATE YourTable SET emp_num = " & B2 & ", title = '" & C2 & "', email = '" & D2 & "', phone = '" & E2 & "' WHERE username = '" & A2 & "'"

只需将公式复制到csv中的所有行,然后执行生成的查询。