【发布时间】:2018-10-30 13:29:08
【问题描述】:
例子:
User ID, Last Name, First Name, Start Date, End Date
001, Pudding , Chocolate , 10/01/2018, 10/30/2018
002, Cake , Carrot , 10/06/2018, 11/07/2018
003, Pie , Apple , 10/03/2018, 11/01/2018
假设我已经有 ID 为 001、002、003 的现有用户,我想更新他们的姓氏、名字、开始日期和结束日期。该表太大,无法使用“MySQL for Excel”等插件,因为我无法缩小搜索范围(上面的示例已简化)
我曾想过将其保存为 .csv,在文本编辑器中打开它并尝试查找/替换文本并形成 UPDATE 语句。但我什至不确定如何准确执行此操作。
我希望每一行都变成这样,从第一行开始:
UPDATE desserts
SET lname = "Pudding", fname = "Chocolate", startdate = "10/01/2018", enddate = "10/30/2018"
WHERE user_id = 001;
我会有几千个这样的,然后我可以在数据库中运行。
【问题讨论】:
-
您在 Windows 上工作吗?你使用什么样的编辑器?记事本++?所有编辑器可能有不同的正则表达式实现...
-
您好!是的,我正在使用 Windows 和 Notepad++
-
我会使用 LOAD DATA INFILE (dev.mysql.com/doc/refman/8.0/en/load-data.html)(可以读取 CSV 文件)插入到临时表 (dev.mysql.com/doc/refman/8.0/en/create-temporary-table.html) 并编写一个更新查询,该查询连接到真实表和用户 ID 上的临时表。
-
"much too large" 意味着您应该尽快放弃 Excel、CSV、Notpad++ 等。另外学习如何编写某种使用 MySQL 作为数据存储的应用程序。
-
要基于 Raymond 的建议,请使用“多表”
UPDATE语法。最终结果是 oneCREATE TABLE、oneLOAD DATA和 oneUPDATE。
标签: mysql regex excel csv sql-update