在phpMyAdmin中,有两个选项可以导入CSV文件。
一个是CSV。另一种是使用LOAD DATA的CSV。
这两者有什么区别?使用一个优于另一个是否有优势?
答案 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”不会。