gpt4 book ai didi

PHP。将下载的 csv 传输到 mysql 数据库 - 如何将下载的 csv 文件存储在 php 内存中

转载 作者:行者123 更新时间:2023-11-29 23:29:10 25 4
gpt4 key购买 nike

我想将从网站下载的数据存储到我的 mysql 数据库中。

我使用函数“CallAPI("GET", $url, $data = false)”通过诸如“http://www.xflow1.com/xGlobalHist.csv/”之类的 URL 来访问数据库...

所以我的调用 $results = CallAPI($method, $url, $data = false);返回保存在变量“$results”中的逗号分隔数组。我可以在网页中回显 $results,它会向我显示数据,所有数据均以逗号分隔。一切都很好,直到这里。

要将 csv 上传到我的 mysql 数据库,我想使用“LOAD DATA INFILE”函数,如下所示:

$upload = <<<eof
LOAD DATA INFILE $results
INTO TABLE X_Adjusted_All
FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(Cusip, Date, Price)
eof;

出现问题是因为“LOAD DATA INFILE $results”不起作用,因为 LOAD DATA INFILE 只需要一个文件名,所以我想将 $results 作为 csv 文件存储在内存中,以避免一直创建和删除文件。我认为这可能有效:

$fp = fopen('php://memory', 'w');
fputcsv($fp, $results);

可惜没有。有谁知道如何获取下载的 csv 文件并将其作为 csv 文件保存到 phps 内存中,以便在 LOAD DATA INFILE 函数中使用?

最佳答案

MySQL 无法直接从 PHP 的内存中读取。您需要使用 tempnam() 创建外部文件。然后 MySQL 就可以读取该文件。您还可以创建一个临时文件并找到 this question 中提到的文件名。 .

tempnam() 的示例显示了如何写入该文件:

<?php
$tmpfname = tempnam("/tmp", "FOO");

$handle = fopen($tmpfname, "w");
fwrite($handle, $results);
fclose($handle);

// do something

unlink($tmpfname);

这会将$results的内容存储到一个名为$tmpfname的文件中,您可以使用LOAD DATA INFILE $tmpfname将其存储在mysql中.

正如评论中提到的,如果性能是一个问题,您可以创建一个 RAM 驱动器来存储该文件。

关于PHP。将下载的 csv 传输到 mysql 数据库 - 如何将下载的 csv 文件存储在 php 内存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26698971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com