我有一个包含.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://
协议。
有什么想法吗?
答案 0 :(得分:0)
除非您指定LOCAL
关键字,否则LOAD DATA INFILE
会指示 mysql服务器读取放置在服务器上的数据文件。 mysql客户端(PHP)不会触及该文件,它只是发送文件名。
如果指定LOCAL
关键字,mysql客户端会将文件从客户端传输到服务器,但服务器仍将读取该文件。不幸的是,zip文件不受支持。