【问题标题】: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 脚本。
  • 有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。

标签: php mysql linux


【解决方案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 导出大量数据非常昂贵。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2016-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多