我正在尝试使用以下基本代码将大量数据插入MySQL数据库:
$query = "INSERT INTO PublicNoticesTable (url, county, paperco, date, notice, id) VALUES " . $queryString;
$result = mysqli_query($connect, $query);
预先生成$queryString
,其中包含以下格式的数千行信息:
('a', 'b', 'c'),('a', 'b', 'c');
这样我可以在一次mysql调用中插入多行数据并减少处理时间。我能够限制进入$queryString
的信息量,并且当查询成功的信息量较少时。好极了!当我提供一点点信息时,查询失败了。如果有人能为我提供解决方案,我将不胜感激。我正在使用GoDaddy和PHPMyAdmin,如果这很重要的话。
谢谢!
答案 0 :(得分:2)
如果您尝试使用INSERT ... VALUES
模式插入值,那么您的限制为max_allowed_packet
。当我放置太多信息时,查询失败,那么为什么现在不调试{{1 }}
来自文档:
要优化插入速度,请将许多小型操作合并为一个 大手术。理想情况下,您进行单个连接,发送数据 对于许多新行,同时延迟所有索引更新和一致性 检查直到最后。
MySQL客户端或mysqld服务器收到大于mysqli_error($connect)
字节的数据包,它会发出数据包太大的错误并关闭连接。
尝试查看数据包的最大大小
max_allowed_packet
SQL长度受1M默认限制,您可以更改
show variables like 'max_allowed_packet';
参数支持更大的单个插入。
答案 1 :(得分:0)
您可以确保列的最大长度足以合并您的数据。如果您的数据非常长(每列超过10,000个字符),您可以尝试使用blob。