2010-10-22 54 views
0

我曾尝试下面的代码在Drupal分贝贴膜内嵌文件如何加载数据使用LOAD DATA INFILE在Drupal

$sql = "LOAD DATA INFILE '".db_escape_string($this->file_name). 
     "' INTO TABLE `".$this->table_name. 
     "` FIELDS TERMINATED BY '".db_escape_string($this->field_separate_char). 
     "' OPTIONALLY ENCLOSED BY '".db_escape_string($this->field_enclose_char). 
     "' ESCAPED BY '".db_escape_string($this->field_escape_char). 
     "' ". 
     ($this->use_csv_header ? " IGNORE 1 LINES " : "") 
     ."(`".implode("`,`", $this->arr_csv_columns)."`)"; 
    $res = db_query($sql); 
    $this->error = mysql_error(); 

我得到了误差,但该文件中存在的CSV到DB文件夹

用户警告:找不到文件'http:\ localhost \ example \ sites \ default \ files \ example_1.csv'(Errcode:22)查询:LOAD DATA INFILE'http:// localhost/example/sites /默认/ files/example_1.csv'INTO TABLE temp_21_10_2010_06_38_00 FIELDS TERMINATED BY',''''''ESCAPED BY'\'IGNORE 1 LINES(PROGRAMNAMEOFFLINEONLINEINSTOCK)在C:\瓦帕\ WWW \示例\网站\上线65.

在线65上面的PHP代码$res = db_query($sql);是所存在的所有\模块\ importmodule \ Quick_CSV_import.php。

回答

3

你需要指定到你的csv文件不是一个URL全/绝对或相对路径

load data infile '/myproj/imports/example_1.csv' into table... 

load data infile 'c:\\myproj\\imports\\example_1.csv' into table... 

建议你检查手册再次http://dev.mysql.com/doc/refman/5.1/en/load-data.html

+0

上面相同的代码工作正常,在PHP,但我无法通过drupal获取它。 – 2010-10-22 09:10:01

+0

与drupal相比,您将拥有与独立php脚本不同的路径。 – 2010-11-09 09:45:03

+0

在Windows中,我不得不使用'/'斜杠作为路径分隔符 – 2014-07-21 13:43:02