5

最初我上传了 Using load Data Infile 行就像 100000 Im Using Ubuntu

示例:数据

ToneCode....艺术家...电影名...语言

1........Mj.............空............英语

3........AB.............空............英语

4........CD............空............英语

5........EF.............空............英语

但现在我必须更新从 ToneCode 1 到 100000 行的列 MovieName 我在 .csv 文件中有要更新的数据。请建议如何使用数据上传现有表的 .Csv 文件

4

2 回答 2

2

我认为使用纯 MySQL 且无需额外脚本的最快方法如下:

  • 创建一个临时表,两列 ToneCode 和 MovieName 与目标表中的相同
  • 使用 LOAD DATA INFILE 将新 CSV 文件中的数据加载到该文件中
  • 使用http://dev.mysql.com/doc/refman/5.1/en/update.html描述的类似 INNER JOIN 的语法更新您的目标表:

    UPDATE items,month SET items.price=month.price WHERE items.id=month.id;

    这将“连接”两个表items,并且month(通过仅使用“逗号语法”进行内部连接)使用id列作为连接条件,并使用items.price列的值更新month.price列。

于 2013-03-21T14:11:18.360 回答
0

正如你们上面提到的那样,我已经找到了解决方案

索恩:示例

创建表A(Id int主键,名称Varchar(20),艺术家Varchar(20),MovieName Varchar(20));

使用添加我所有的 100000 行

将文件 '/Path/file.csv' 中的数据加载到表 tablename(A) 字段中以 ',' 结尾,并由 '"' 以 '\n' (Id,Name,Artist) 结尾的行结束,这里的电影值为 null

创建临时表 TA(Id int primary Key,MovieName Varchar(20));

将数据上传到临时表 TA 将文件 '/Path/file.csv' 中的数据加载到表 tablename(A) 字段中,以 ',' 结尾,由 '"' 括起来,行以 '\n'(IDx,MovieName) 结尾

现在像你说的那样使用join

更新 Tablename(TA),TableName(A) 设置 A.MovieName=TA.MovieName Where A.Id=TA.Id

于 2013-03-22T06:08:53.230 回答