2017-02-25 8 views
0

私のテーブルにCSVテキストファイルをインポートするには、以下のコードを使用していますが、新しいホストはLOAD DATAコマンドを許可していません。当然のことながら、彼らは私に明確な答えを与えることは役に立たない。PHPとMySQLiを使用したCSV代替メソッドのインポート

LOAD DATA LOCALLOAD DATA以外の方法は、PHP/MySQLi経由でMySQLテーブルにCSVファイルをインポートする必要がありますか?

// Query - import CSV file into DB, ignore top 3 lines 
    $sql= "LOAD DATA LOCAL INFILE '".$import_file."' INTO TABLE `$dbtable` 
     FIELDS TERMINATED BY '".$fieldseparator."' 
     LINES TERMINATED BY '".$lineseparator."' 
     IGNORE 3 LINES 
     SET TIMESTAMP = '".$local_time."'"; 

おかげ

EDIT:

提案fgetcsv機能を検討していた後、私は以下のコードを思い付きました。理論的にはうまくいくはずですが、コードはエラーを表示せずに最終的にタイムアウトするまでロードされているようです。データベースには、単一の行エントリのみが移入されます。

私はここで間違っていますか?

   if ($import_file) { 
        // set row counter to 0 
        $line = 0; 

        while (($row = fgetcsv($import_file)) !== false) { 

        // ignore the first 3 rows of the file based on iteration of the counter 
        if ($line <= 3) { 
         $line++; 
         continue; 
        } else { 

         // if row count is higher than 3, insert into database 
         $sql = "INSERT INTO `$dbtable` 
          (`OPERA_CONF`, `CRS`, `HOLIDEX`, `ARRIVAL`) 
          VALUES (
          '" . $row[0] . "', 
          '" . $row[1] . "', 
          '" . $row[2] . "', 
          '" . $row[3] . "' 
         )"; 

         // execute query 
         $mysqli->query($sql); 
         $line++; 

        } 

        } 

       } else { 
        echo "\n CSV file could not be found."; 
       } 
+0

あなたはphpMyAdminのへのアクセスを持っていない:

は、使用の簡単のためにここに貼り付けhttp://www.readmyviews.com/import-csv-data-mysql-using-php/

コードを見たことがありますか? – Ashish

+0

@Ashish私はそうですが、このクエリを実行しているスクリプトはcronジョブにバインドされており、15分ごとに実行されるはずです。 'LOAD DATA'コマンドがなければ、何もできません(少なくとも私は方法は分かりません)。 – Armitage2k

答えて

1

PHPを使用して、CSVファイルの内容を1行ずつ読み込んでテーブルに挿入する必要があります。

$filepath = "C:\wamp\www\importdata\sample.csv"; 

if (($getdata = fopen($filepath, "r")) !== FALSE) { 
       fgetcsv($getdata); 
       while (($data = fgetcsv($getdata)) !== FALSE) { 
        $fieldCount = count($data); 
        for ($c=0; $c < $fieldCount; $c++) { 
         $columnData[$c] = $data[$c]; 
        } 
      $option_name = mysqli_real_escape_string($connect ,$columnData[0]); 
      $option_value = mysqli_real_escape_string($connect ,$columnData[1]); 
      $import_data[]="('".$option_name."','".$option_value."')"; 
      // SQL Query to insert data into DataBase 

      } 
      $import_data = implode(",", $import_data); 
      $query = "INSERT INTO option_data_master(option_name,option_value) VALUES $import_data ;"; 
      $result = mysqli_query($connect ,$query); 
+0

そのニックのおかげで、' option_data_master(option_name、option_value) 'の目的は何ですか?それらの列名ですか?おそらく私の投稿されたコードを見ていただけますか?ありがとう – Armitage2k

+0

問題はありません:)あなたのコードはよく見えます。インポートしようとしているCSVファイルのサイズはどれくらいですか? –

+0

極小、最大500行、各行25列。すべてのものがロードされ、エラーメッセージなしで停止します。 – Armitage2k

関連する問題