CSV导入和使用LOAD DATA的CSV之间的区别?

时间:2011-01-27 16:42:04

标签: mysql csv import

在phpMyAdmin中,有两个选项可以导入CSV文件。

一个是CSV。另一种是使用LOAD DATA的CSV。

这两者有什么区别?使用一个优于另一个是否有优势?

5 个答案:

答案 0 :(得分:12)

LOAD DATA INFILE是一个完全独立于PHPMyAdmin的MySQL查询。

CSV导入可能涉及将文件上传到PHPMyAdmin服务器,在那里它解析文件并构建一系列INSERT语句来对服务器运行。

就个人而言,我不相信PHPMyAdmin所做的任何事情;-) - 但是,实际性能可能取决于您的表结构和数据。

但是,我会注意到,当从LOAD DATA INFILE命令插入数据时,MySQL会获得一些非常有效的快捷方式。

答案 1 :(得分:4)

如上所述,LOAD DATA选项实际上是告诉phpMyAdmin使用MySQL命令让MySQL解析并加载文件而不是phpMyAdmin首先解析它。

如上所述,如果您对自己的文件的来源和准确性不感到100%安全,那么让MySQL访问加载文件可能会很危险。这就像使用没有sql注入保护的php表单来插入数据。

但是,在某些情况下,phpMyAdmin无法正确格式化数据或在使用常规CSV“选项时无法解析数据。这将导致未解释的错误,例如”行N上的格式无效“或“N行上的字段数不正确”这些可能不是确切的错误消息,因为我此刻没有登录phpMyAdmin。在这些情况下,LOAD DATA选项可用于传递错误。我认为额外的Use local keyword的选项与确保使用本地服务器上特定版本的MySQL的正确命令有关。虽然不确定最后一部分。

要记住的是文件的大小(导入的行数)我必须将1600行文件分解为较小的文件,即使使用LOAD DATA选项以获取它经历。它没有出错,但是当文件太大时“受影响的行”不正确。

答案 2 :(得分:3)

第一个选项将让phpMyAdmin解析CSV文件本身,然后生成并执行SQL以插入数据。第二个选项将让MySQL负责加载,处理和插入数据。

两个选项(应该)的行为方式相同,但LOAD DATA INFILE选项通常要快得多,而且您不必担心PHP的内存/执行时间限制。唯一的问题是所有配置都不支持它,因为对于允许MySQL访问上传文件存在安全隐患,因此它经常被禁用(例如共享主机)。

答案 3 :(得分:0)

使用LOAD DATA的CSV和CSV。第一种方法是由phpMyAdmin在内部实现的,因其简单性而推荐使用。使用第二种方法,phpMyAdmin接收要加载的文件,并将其传递给MySQL。从理论上讲,这种方法应该更快。但是,由于MySQL本身,它有更多的要求

答案 4 :(得分:0)

要添加到其他回复:“CSV”一个坚持在文本文件和表格中具有完全相同的列数。 “使用LOAD DATA的CSV”不会。