日常工作中,可能会有产品要求批量修改线上数据的情况~如下:
需求:根据表中的客户编号和纳税人识别号,批量更新数据库中客户编号对应的纳税人识别号,仅在表中纳税人识别号无值时更新。
已知表中客户编号唯一。
表名:customer 客户编号:number 纳税人识别号:taxpayer_identification_number
SQL语句是这样的:
UPDATE customer SET taxpayer_identification_number = '??????' WHERE (taxpayer_identification_number = '' OR taxpayer_identification_number IS NULL) AND number = '??????';
假设表格是这样的~
现在是26条数据,实际工作中可能需要更新200条数据,这种情况下手写不太可能,可以用excel表格批量生成。
一、每条的sql语句应该是这样的:
UPDATE customer SET taxpayer_identification_number = '??????' WHERE (taxpayer_identification_number = '' OR taxpayer_identification_number IS NULL) AND number = '??????';
二、下面我们用excel拼接,用notepad++辅助设置格式:
①新打开一个sheet
1、A列输入UPDATE语句
UPDATE customer SET taxpayer_identification_number = '
2、B列粘贴所有纳税人识别号(注意顺序与客户编号一一对应)
3、C列输入WHERE条件
WHERE (taxpayer_identification_number = '' OR taxpayer_identification_number IS NULL) AND number = '
4、D列粘贴所有客户编号(注意顺序与纳税识别号一一对应)
注意:因为客户编号和纳税人识别号都是字符串类型,所以sql语句中字段要用‘’单引号框上,且where前要有一个空格。如下图所示:
②填充所有sql语句
1、点击A列第一行,将鼠标移至右下角,放到黑色加号上,然后双击,即可复制所有行。
2、同理C列复制所有行
③接下来需要处理纳税人识别号和客户编号,B列的纳税人识别号后加单引号',D列的客户编号后加单引号分号 '; 。
1、taxpayer_identification_number末尾加'方法:借助notepad++,粘贴所有纳税人识别号后。1、ctrl+f。2、选择替换,并在“查找目标”中输入\r,在“替换为”中输入单引号'。3、全部替换
2、number后加单引号和分号 '; :借助notepad++,粘贴所有客户编号后。1、ctrl+f。2、选择替换。并在“查找目标”中输入\r,在“替换为”中输入单引号分号'; 。3、全部替换
3、接下来分别替换到B列和D列,注意别替换错了
④马上完成啦~只需要整体复制,通过notepad++将整体sql格式调整下即可。
如下图所示,刚复制进来,会有些没用的空格,我们复制纳税人识别号前的单引号和空格,将其替换成单引号。
方法:1、选中;2、ctrl+c;3、ctrl+F,选择替换,在替换为中输入单引号'。
修改后
⑤最后可以直接保存,或者保存为.sql文件。
保存为.sql文件后是这样的,自动识别SQL关键字。
⑥可以复制一条到数据库,检验下语法是否有问题:
希望对你有所帮助~不甚荣幸~