导入数据MySQL

时间:2013-06-27 12:42:54

标签: mysql database phpmyadmin

我有一个庞大的数据集是什么是在MySQL PHP数据库中上传数据的更快的方法,无论如何都要验证所有数据是否已导入。

任何建议或提示都将非常感激。谢谢。

2 个答案:

答案 0 :(得分:0)

如果数据集非常庞大(可以在几小时内传输),那么找到一种有效的方法是不值得的 - 任何脚本都应该能够完成这项工作。我假设您正在阅读一些非db格式(例如纯文本)?这样,只需阅读并插入即可。

如果在插入行之前需要仔细处理,可能需要先考虑在内存及其子对象中创建实际对象,然后将它们映射到行和表 - 对象 - 关系数据源模式在这里很有价值。然而,这将会慢得多,除非绝对必要,否则我不会推荐它,特别是如果你只做一次。

对于非常快速的访问,有些人在磁盘上写了一个直接的二进制blob对象,然后直接将它读入一个数组,但这可以用C / C ++这样的语言;我不确定它是否/如何在脚本语言中使用。同样,这有利于将数据读回内存,而不是传输到数据库。

验证数据传输的最简单方法是将db的计数(*)与文件中的项目数进行比较。更高级的方法是计算主键集的哈希值(例如sha1)。

答案 1 :(得分:0)

我使用LOAD DATA,这是一个标准的MySql Loader Tools。它的工作正常而且速度更快。有很多选择。

您可以使用:

  • 名为export_du_histo_complet.txt的数据文件,其中包含多行,如下所示:     “xxxxxxx.corp.xxxxxx.com”; “GXTGENCDE”; “GXGCDE001”; “M_MAG105”; “TERMINE”; “2013年6月27日”, “14时08分00秒”, “14时08分00秒”; “00:00:01”; “795691”

  • sql文件(因为我使用调用SQL文件的Unix Shell):

    LOAD DATA INFILE '/home2/soron/EXPORT_HISTO/export_du_histo_complet.txt'
            INTO TABLE du_histo
    FIELDS 
            TERMINATED BY ';'
            ENCLOSED BY '"'
            ESCAPED BY '\\'
    LINES
            STARTING BY ' '
            TERMINATED BY '\n'
    (server, sess, uproc, ug, etat, date_exploitation, debut_uproc, fin_uproc, duree, num_uproc)
    

我指定了要导入的表字段(我的表有更多列)

  • 请注意,存在MySql bug,因此您无法使用变量来指定INFILE。