PHP:按名称打开压缩文件(不提取)

时间:2015-01-03 10:00:55

标签: php mysql csv zip

我有一个包含.csv文件的.zip文件。我想知道我是否可以以某种方式使用此.csv文件而不在本地提取。我知道ZipArchive类可以在不提取文件内容的情况下获取文件内容,如下所示:

$zip = new ZipArchive;
$zip->open('archive.zip');
$contents = $z->getFromName('file.csv');

这很好,但我需要在MySQL LOAD DATA INFILE查询中使用它,我必须提供文件的名称,而不是内容。

我已经听说过zip://协议,我尝试过这样的事情:

LOAD DATA INFILE 'zip:///Library/WebServer/Documents/archive.zip#file.csv'
INTO TABLE `test`
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(`column1`, `column2`);

但它似乎无法在这里工作。适用于提取的.csv文件,没有zip://协议。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

除非您指定LOCAL关键字,否则LOAD DATA INFILE会指示 mysql服务器读取放置在服务器上的数据文件。 mysql客户端(PHP)不会触及该文件,它只是发送文件名。

如果指定LOCAL关键字,mysql客户端会将文件从客户端传输到服务器,但服务器仍将读取该文件。不幸的是,zip文件不受支持。

http://dev.mysql.com/doc/refman/5.0/en/load-data.html