我有一个仅用于日志记录的 MySQL 数据库。它由几个简单的相似 MyISAM 表组成。总是有一个本地(即位于同一台机器上)客户端仅将数据写入数据库,而多个远程客户端仅读取数据。
我需要的是尽可能快地从本地客户端插入大量数据。
我已经尝试了很多方法来加快速度,例如通过增加值列表的长度来减少插入量,或者使用 LOAD DATA .. INFILE
和其他方法。
现在在我看来,我已经遇到了将值从字符串解析为其目标数据类型的限制(在解析查询或文本文件时是否完成并不重要)。
那么问题是:
MySQL 是否提供了一些直接为本地客户端操作数据的方法(即不使用 SQL)?也许有一些 API 允许通过简单地传递一个指针来插入数据。
再一次。我不想优化 SQL 代码或在脚本中调用与 hd1 所建议的相同的查询。我想要的是将数据缓冲区直接传递给数据库引擎。这意味着我根本不想调用 SQL。可能吗?
最佳答案
使用mysql的LOAD DATA
命令:
将数据以 CSV 格式写入文件,然后执行此 OS 命令:
LOAD DATA INFILE 'somefile.csv' INTO TABLE mytable
有关详细信息,请参阅 documentation
关于mysql - 如何直接向mysql插入数据(不使用sql查询),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16785543/