簡體   English   中英

遍歷文件夾中的CSV文件,然后使用PHP將數據加載到MySQL中

[英]Iterate through CSV files in a folder and load data into MySQL using PHP

我使用以下代碼遍歷文件夾中的文件,並將數據加載到MYSQL表中。 我無法完全正常工作。 有更好的解決方案嗎?

if ($handle = opendir('C:\Documents and Settings\Desktop\CSV Files')) {
while(false !== ($entry = readdir($handle)))
{
mysql_query("LOAD DATA LOCAL INFILE %handle
                          INTO TABLE main_table
                          FIELDS
                          TERMINATED BY ','
                          OPTIONALLY ENCLOSED BY '"'
                          ESCAPED BY '"'
                          LINES TERMINATED BY '\r\n'
                          IGNORE 1 LINES")
}
}

您的代碼有太多錯誤,很難選擇從哪里開始。

  • 您的目錄路徑不會轉義。
  • 您沒有任何告訴您無法打開目錄的信息。
  • %handle不是PHP變量,而且是錯誤的變量。
  • $entry只是文件名,而不是完整路徑。
  • mysql_query()調用的末尾沒有分號。
  • 您的“包圍”和“轉義”字符均為" ,兩者均未轉義。
  • echo顯查詢而不是運行查詢,以確保它在無法正常工作時正確地構成。
  • 您實際上從未檢查過查詢是否成功。
  • 開啟錯誤報告功能,因為您遇到了一些明顯的解析錯誤,這些錯誤會使該腳本在運行之前就失敗了。
  • 並且不受歡迎的mysql_*函數已被棄用,您應該使用PDO或MySQLi。

所以這應該可以工作:

<?php
error_reporting(E_ALL);
define('DEBUG', true);

$basedir = 'C:\\Documents and Settings\\Desktop\\CSV Files\\';
if ($handle = opendir($basedir)) {
  while(false !== ($entry = readdir($handle))) {
    $query = "LOAD DATA LOCAL INFILE $basedir$entry
                INTO TABLE main_table
                FIELDS
                TERMINATED BY ','
                OPTIONALLY ENCLOSED BY '\"'
                ESCAPED BY '\\'
                LINES TERMINATED BY '\r\n'
                IGNORE 1 LINES");
    if(DEBUG) { echo $query . "\n"; }
    if(!mysql_query($query)) {
      die('Query failed: ' . mysql_error());
    }
  }
} else {
  echo "Could not open $basedir";
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM