好吧,也许这真的很简单,但我自己无法弄清楚:
首先我有一个 csv 文件。
我正在导入这个
加载数据本地INFILE
...到一个有 20 列和超过 10000 行的 mysql 表中。
然后,在某些行和列中,有一些内容为“”的字段,我想将其替换为“”。 我不知道“”将在哪些列中,所以我想迭代整个表。
所以我想到了这样的事情:
替换为产品 (XXX) VALUE ("") WHERE XXX = ""
...其中 XXX 都是列名称。
有人可以给我提示吗? 也许我应该在 php 中完成它? 谢谢。
[编辑]或者也许有一种方法可以在导入 csv 文件本身时做到这一点?
[编辑]我只是想做一个UPDATE table SET column = ""WHERE column=""
。但我希望不需要为每一列编写 20 个查询。
最佳答案
正如 Mihai 提到的,您可以使用 INFORMATION_SCHEMA
表来生成要执行的 SQL。
使用以下脚本生成 SQL:
SELECT CONCAT('UPDATE ', TABLE_NAME ,' SET ',COLUMN_NAME ,'=\"\" WHERE ', COLUMN_NAME ,'=\" \";') AS SQLCOMMAND
FROM INFORMATION_SCHEMA.COLUMNS
WHERE data_type IN ('VARCHAR' ,'CHAR')
AND TABLE_SCHEMA='your_database_name'
这将为所有 VARCHAR
或 CHAR
列打印出更新语句,并将这些列值更新为“”。
关于php - MySQL-替换整个表中所有行和列的空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25858625/