前几天使用CSV从正式环境的数据导入到测试环境,发现导入的数据后面都有空格。
本来打算直接打开文件去除空格,发现里面的内容是乱码的,而且数据量达到三百万,就算不乱码也很难替换空格(数据量大卡死),然后查了一下使用的sql的TRIM函数发现并没有效果,而且执行速度非常慢。
UPDATE "表名称" SET "字段一" = TRIM(TRAILING FROM "字段一"), "字段二" = TRIM(TRAILING FROM "字段二"), "字段三" = TRIM(TRAILING FROM "字段三"), "字段四" = TRIM(TRAILING FROM "字段四"), "字段五" = TRIM(TRAILING FROM "字段五"), "字段六" = TRIM(TRAILING FROM "字段六");
然后查到可以使用正则函数REGEXP_REPLACE去掉空格,并且执行效率非常高,300多万数据不到60秒就更改完了。
UPDATE "表名称"
SET
"字段一" = REGEXP_REPLACE("id", '\s+$', ''),
"字段二" = REGEXP_REPLACE("sysdm", '\s+$', ''),
"字段三" = REGEXP_REPLACE("pch", '\s+$', ''),
"字段四" = REGEXP_REPLACE("jczb", '\s+$', ''),
"字段五" = REGEXP_REPLACE("jcff", '\s+$', ''),
"字段六" = REGEXP_REPLACE("tdlylx", '\s+$', ''),
"字段七" = REGEXP_REPLACE("ypbh", '\s+$', '');