【问题标题】:Efficient method for uploading csv file上传csv文件的高效方法
【发布时间】:2012-03-14 19:34:37
【问题描述】:

我正在将 csv 文件内容上传到 mysql 数据库。 我不确定哪种方法最好、最有效、更好。

1] 使用 LOAD DATA INFILE SQL 语句

LOAD DATA LOCAL INFILE '/importfile.csv'
INTO TABLE test_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(field1, filed2, field3); 

2] 使用脚本解析和导入文件 例如php 中的 fgetcsv() 函数

【问题讨论】:

  • 唯一可以确定的方法是对两者进行基准测试。但我的钱肯定是在LOAD DATA LOCAL INFILE 上,因为速度和易用性。
  • 使用fgetcsv(),您要么需要调用多个INSERT 语句,要么编写一堆代码来构建一个带有VALUES (),(),(),(),()... 链的很长的INSERT 语句。在 MySQL 中导入原生 CSV 会容易得多。

标签: php mysql csv


【解决方案1】:

如果你能确定 cvs 的内容,请使用方法 1。

但是,如果您不确定,您可能希望脚本对文件内容进行一些完整性检查。在这种情况下使用方法2。

【讨论】:

    【解决方案2】:

    直接加载到数据库中可能比使用脚本更有效 - 您没有运行脚本、读取/解析、组合查询等的开销。您只需移动数据即可。

    如果您需要每天手动执行 100 次,那么您将需要更自动化的东西,例如脚本。然后你需要考虑你的个人效率和努力程度。

    【讨论】:

      【解决方案3】:

      不使用 LOAD DATA INFILE SQL 的唯一原因是您在哪里处理某些数据。例如,如果必须在插入之前转换或连接数据。但如果是直接导入,这是迄今为止最快的。

      【讨论】:

        【解决方案4】:

        我个人更喜欢LOAD DATA INFILE,因为加载脚本通常使用多个insert 语句。如果您需要修改 CSV,使用脚本会更容易,但根据我的经验,LOAD DATA INFILE 更快。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-11-26
          • 2010-12-12
          • 1970-01-01
          • 1970-01-01
          • 2021-05-20
          • 1970-01-01
          • 2012-03-12
          • 2012-06-08
          相关资源
          最近更新 更多