【问题标题】:How to track source files loaded in MySQL?如何跟踪 MySQL 中加载的源文件?
【发布时间】:2011-12-07 10:41:38
【问题描述】:

我在 MySQL 中加载文件。每个文件包含:

Date ShopNumber subject price quantity total

例如文件1:

01/01/2011 Mexico Book1 $10 2 $20
01/01/2011 Mexico Book2 $10 2 $20
01/01/2011 Mexico Book3 $10 2 $20
...............................

文件2:

01/01/2011 Mexico Book4 $10 2 $20
01/01/2011 Mexico Book1 $10 1 $10
...............................

在 MySQL 表中:

01/01/2011 Mexico Book1 $10 3 $30
01/01/2011 Mexico Book2 $10 2 $20
01/01/2011 Mexico Book3 $10 2 $20
01/01/2011 Mexico Book4 $10 2 $20
...............................

问题是:我必须跟踪源文件,并且我不能将源文件包含到表的唯一键中 - 我只需要保留总计。 重复很少见。是否可以添加另一个只保留重复项的表?谢谢。

【问题讨论】:

  • 不清楚是什么问题?如何在导入时合并重复项?或者如何在导入时记录合并值实际上是从特定行合并的信息?
  • 不,我需要知道 Book1(..n) 来自哪些文件。
  • 你如何加载它们?使用 LOAD DATA INFILE?
  • 我可以用不同的方式加载,我也有你写的。我需要详细的共同原则来跟踪提供了哪些文件信息。无论如何,感谢您对我的问题感兴趣

标签: java mysql file key unique


【解决方案1】:

我的应用程序包含导入功能,这是我解决将数据加载到 MySQL 和跟踪信息问题的方法。

  • 当用户上传文件时,应用程序会将其重新格式化为制表符分隔的 uft8 编码的有效临时文件
  • 文件的名称和有关导入的其他一些元信息,应用程序插入到单独的表 import_info 并检索其 ID (update_id)
  • 然后应用程序使用 LOAD DATA INFILE 查询从文件中加载数据,并将文件的路径传递给该查询,update_idattr1attr2attr3 来自文件、update_id来自查询的参数)

    LOAD DATA LOCAL INFILE %(file_path)s
    INTO TABLE importdata
    CHARACTER SET 'utf8'
    (attr1, att2, att3, update_id)
    SET update_id = %(update_id)s;
    
  • 在我的例子中,importdata 表允许在导入数据后应用程序在其他表中合并的重复项。如果合并成功,我从importdata表中删除导入的数据。

【讨论】:

    猜你喜欢
    • 2011-11-20
    • 2010-09-05
    • 2021-02-15
    • 2010-10-02
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    相关资源
    最近更新 更多