将数千条记录从单个 txt 文件导入数据库 MySQL 的更快方法?

Posted

技术标签:

【中文标题】将数千条记录从单个 txt 文件导入数据库 MySQL 的更快方法?【英文标题】:Faster way to import thousands of records from a single txt file into database MySQL? 【发布时间】:2011-04-01 03:52:49 【问题描述】:

我有 50 个 txt 文件,每个文件大约有 8 列和 80,000 条记录。我在 Matlab 中编写了一个脚本,它一个一个地读取所有文件,然后使用每个文件的单个 INSERT 语句将其放入 mysql。但是这样做会花费大量时间(即使是单个文件!)。我也尝试过使用 phpmyAdmin,它说文件太大而无法上传(大约 8 MB)。因此,请提出一种解决方法,以及通常导入大型 txt 文件的理想方法是什么。另外导入 1 个这样的文件通常需要多长时间?

【问题讨论】:

【参考方案1】:

您所需要的都在本手册中:http://dev.mysql.com/doc/refman/5.0/en/insert-speed.html

【讨论】:

【参考方案2】:

使用LOAD DATA INFILE 语法。

http://dev.mysql.com/doc/refman/5.1/en/load-data.html

【讨论】:

是的,加载数据似乎工作得很快。想知道为什么单次插入多条记录需要这么多时间!【参考方案3】:

试试mysqlimport

myisam 的表类型也将导入更快,这取决于您是否需要事务支持 (innodb)。

【讨论】:

在插入之前启动事务并且 InnoDB 赶上 MyISAM(不要忘记在之后提交;))【参考方案4】:

使用多重插入。它并不昂贵,因为您仍然只连接到 mysql 一次。然后,您可以使用循环来更新您的值(-> 您的 sql)并执行(我认为它是 mathlab 的“获取”)查询。

(例如参见http://spx.arizona.edu/Projects/Database/Accessing%20mySQL%20through%20Matlab.pdf)

【讨论】:

以上是关于将数千条记录从单个 txt 文件导入数据库 MySQL 的更快方法?的主要内容,如果未能解决你的问题,请参考以下文章

如何防止写入特殊字符[重复]

SQL数据导入/导出,操作表记录,查询及匹配条件

使用 Django 将数千条记录插入 SQLite 表的有效方法是啥?

Database基础:SQL数据导入/导出 操作表记录查询及匹配条件

mysql批量插入数据

将数千条记录插入表中的最有效方法是啥(MySQL,Python,Django)