如何加快从数据库中保存文件
Posted
技术标签:
【中文标题】如何加快从数据库中保存文件【英文标题】:How to speed up to make save file from database 【发布时间】:2020-08-31 12:27:14 【问题描述】:我有一个 mysql 数据库。这是一个非常庞大的数据库。当我选择具有 1M 记录的数据时,我应该在磁盘上制作 csv 文件。 我制作 php 脚本。但是它被Linux杀死了。 如何快速制作PHP脚本?
$batches = $itemcount / 50000;
for ($i = 0; $i <= $batches; $i++)
$offset = $i * 50000;
$sql = $sql_org . " LIMIT $offset, 50000 ";
$stmt = $db->prepare($sql);
if($stmt)
if($stmt->execute())
$stmt->bind_result($FIRSTNAME, $LASTNAME, $PHONE....
【问题讨论】:
你确定不是php.net/manual/en/info.configuration.php#ini.max-execution-time 是的。这不是执行时间。我在终端中运行 PHP 脚本。 有1M条记录。所以就发生了内存溢出。 也许以 10,000 个为一组或任何可行的方式执行,每次都附加到 CSV。 使用类似SELECT blah blah FROM foo WHERE what INTO OUTFILE 'file.csv' FIELDS ENCLOSED BY '"' TERMINATED BY ';' ESCAPED BY '"' LINES TERMINATED BY '\r\n';
的东西你不需要PHP。
【参考方案1】:
安装mysql客户端和piping out the output
shell_exec('mysql -u username -p "password" --database=dbname --host=AWShostname --port=AWSport --batch
-e "select * from `table`"
| sed #s/\t/","/g;s/^/"/;s/$/"/;s/\n//g# > /path/to/yourlocalfilename.csv')
注意:从 AWS 导出大量数据非常昂贵。
【讨论】:
以上是关于如何加快从数据库中保存文件的主要内容,如果未能解决你的问题,请参考以下文章
如何从 csv 文件中获取数据并使用 mysql 保存到 grails 中?
如何保存从Kinect 2.0收集的Body数据并将其保存在JSON文件中?
如何从本地 JSON 文件解析数据并保存在模型类中并在 tableview 中使用