2010-10-22 55 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