Mysql为表的现有列加载数据

时间:2013-03-21 10:48:39

标签: mysql ubuntu load-data-infile

最初我上传了使用加载数据Infile行有100000 Im使用Ubuntu

实施例:数据

ToneCode ....艺术家...的movieName ...语言

1 .................... Mj .......... Null ............ English

3 .................... AB .......... Null ............ English

4 .................... CD ......... Null ............ English

5 .................... EF .......... Null ............ English

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

2 个答案:

答案 0 :(得分: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列作为连接标准“加入”两个表monthid(仅使用INNER JOIN的“逗号语法”),并使用items.price列的值更新month.price列。

答案 1 :(得分:0)

我找到了一个解决方案,如上面提到的那些人

Soln:example

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

使用

添加我的所有100000行

将数据infile'/Path/file.csv'加载到由'''括起来的','括起的表tablename(A)字段中 以'\ n'结尾的行 (Id,Name,Artist)这里的电影值为空

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

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

现在使用join表示

更新表名(TA),表名(A)设置A.MovieName = TA.MovieName其中A.Id = TA.Id