【问题标题】:Mysql Importing new codes from excelMysql从excel导入新代码
【发布时间】:2010-12-16 06:39:13
【问题描述】:

我有一个 CSV 文件,其中包含从项目 ID 到一些新类别代码的映射。

例如

Project Id, New Code 
1, 035 
2, 029 
3, 023 
4, 035 
5, 029 
.... 

以上是CSV文件/excel文件

我有一个包含这些项目 ID 的项目表,我想添加一个包含相关新代码的新列。

有什么办法可以用mysql做到这一点吗?

【问题讨论】:

    标签: mysql excel import


    【解决方案1】:

    这是一个使用 Excel 的 CONCATENATE 功能的快速而简单的解决方案:

    假设您在 A 列中有项目 ID,在 B 列中有新代码,请为 C 列输入以下内容:

    =CONCATENATE("update projects set new_code = ",B1, " where project_id = ", A1, ";")
    

    然后将其复制并粘贴到 Excel 电子表格中的所有行。这会生成 SQL 语句,然后您可以使用它来批量更新表。将文本复制到脚本中,然后让mysql执行。

    你最终会得到一个看起来像这样的脚本:

    update projects set new_code = 35 where project_id = 1;
    update projects set new_code = 39 where project_id = 2;
    update projects set new_code = 23 where project_id = 3;
    

    这当然假设您的表中已经有了新列。如果没有,请使用 alter table 语句添加:

    alter table projects add column new_code int; 
    

    注意:如果您想重复执行此方法,我不推荐此方法 - 但如果它只是一次性的,那么像这样的快速解决方案就可以了。

    【讨论】:

    • 这是一种一次性的.. 非常有趣的方法。好主意
    【解决方案2】:

    第一个问题是将您的 csv 导入数据库。 mysql有一些解决方案,例如 http://dev.mysql.com/doc/refman/5.1/en/mysqlimport.html

    也有第三方工具可以做这些事情。

    当您在数据库的新表中拥有 CSV 数据并在项目表中创建新列时,只需执行以下语句:

    UPDATE projects p 
    SET new_code = 
       (select distinct new_code from temp_table where project_id = p.project_id)
    

    【讨论】:

    • 是的,这正是我发布问题后的想法。有道理。
    猜你喜欢
    • 1970-01-01
    • 2023-03-10
    • 2012-10-24
    • 1970-01-01
    • 2012-08-07
    • 1970-01-01
    • 2011-02-28
    • 2015-10-30
    • 2014-10-25
    相关资源
    最近更新 更多