1

重複の可能性:
PHP/MySQL を使用した CSV データのインポート

PHPフォームを介してMySQLデータベースにファイルをインポートする最も簡単な方法を教えてください

4

5 に答える 5

2

これを試してみてください。これは、関数を使用してファイルの行を文字列の配列に読み取り、各行をループして列の値をテーブルに格納します。明らかに、データベース接続設定と適切なクエリを挿入する必要があります。

function loadData()
{
   $lines = readInputFromFile("myCSV.csv");
   for ($i = 0; $i < count($lines); $i++)
   (
      $columns = explode(",", $lines[$i]);
      $conn = new PDO("mysql:host=YOUR_HOST;port=YOUR_PORT;dbname=YOUR_DBNAME", "UserName", "Password");

      $query = "INSERT INTO MYTABLE VALUES ('".$columns[0]."', '".$columns[1]."', '".$columns[2]."')";      
      $stmt = $conn->prepare($query);
      $stmt->execute();
   )
}

function readInputFromFile($file)
{
   $fh = fopen($file, 'r');
   while (!feof($fh))
   {
      $ln = fgets($fh);
      $parts[] = $ln;
   }

   fclose($fh);

   return $parts;
}
于 2013-02-02T08:36:11.643 に答える
1

これは、fgetcsvPHP関数を使用して実行できます。

http://php.net/manual/en/function.fgetcsv.php

その後、Mysql INSERT関数を使用して、そのデータをデータベースに保存します。

于 2013-02-02T08:17:34.720 に答える
1

MySQLには、単一のSQLクエリでCSVファイルを直接インポートできるLOADDATAINFILE機能があります。

簡単な例:

          <?php
            $query = <<<eof
                LOAD DATA INFILE '$fileName'
                 INTO TABLE tableName
                 FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '"'
                 LINES TERMINATED BY '\n'
                (field1,field2,field3,etc)
            eof;

            $db->query($query);
            ?>

それはそれと同じくらい簡単です。

ループも大騒ぎもありません。そして、PHPで解析するよりもはるかに高速です。

MySQLのマニュアルページはこちら:http ://dev.mysql.com/doc/refman/5.1/en/load-data.html

著者に役立つことを願っています

于 2013-02-02T08:18:38.440 に答える
0

csvファイルをmysqlにインポートする最も簡単な方法を探している場合は、次の手順に従ってください。

例えば:

LOAD DATA LOCAL INFILE 'import.csv' INTO TABLE from_csv FIELDS TERMINATED BY ','  LINES TERMINATED BY '\n'  (si, distro, available);

詳細については:

http://www.techtrunch.com/linux/import-csv-file-mysql-table

于 2013-02-02T08:20:15.190 に答える
0

以下のコードを参照してください

csv2sql("pre_employee","ch_data.csv");

function csv2sql($table_name,$csvname)
{
$fl=fopen($csvname,r);
//if(!file_exists('a.txt'))
//{
    $flw=fopen("a.txt",'w');
//}
$sql='';
$i=2;
//echo $csvname.$data=fgetcsv($fl,1000,",");die();
while(($data=fgetcsv($fl,1000,","))!=false)
{
    $sql.="insert into ".$table_name." values('".$data[0]."','".$data[2]."','".$data[3]."');".chr(13);
    $i++;
}
//echo $sql;
fwrite($flw,$sql);
fclose($flw);
fclose($fl);
 }

a.txtは、SQLを保存するファイル名です。また、このtxtファイルをmysqlデータベースにインポートすることもできません。

于 2013-02-02T08:20:31.487 に答える