CSVからデータをインポートしようとすると少し問題があり、まだ解決できていないという質問がいくつかあります。PHP/MySQLを使用したCSVデータのインポート
まず第一には、ここ(CSSとDBの接続を削除する、少しそれを片付け)視点で物事を置く助けるために私のコードです:
<body>
<div id="container">
<div id="form">
<?php
$deleterecords = "TRUNCATE TABLE tablename"; //empty the table of its current records
mysql_query($deleterecords);
//Upload File
if (isset($_POST['submit'])) {
if (is_uploaded_file($_FILES['filename']['tmp_name'])) {
echo "<h1>" . "File ". $_FILES['filename']['name'] ." uploaded
successfully." . "</h1>";
echo "<h2>Displaying contents:</h2>";
readfile($_FILES['filename']['tmp_name']);
}
//Import uploaded file to Database
$handle = fopen($_FILES['filename']['tmp_name'], "r");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$import="INSERT into importing(text,number)values('$data[0]','$data[1]')";
mysql_query($import) or die(mysql_error());
}
fclose($handle);
print "Import done";
//view upload form
} else {
print "Upload new csv by browsing to file and clicking on Upload<br />\n";
print "<form enctype='multipart/form-data' action='upload.php' method='post'>";
print "File name to import:<br />\n";
print "<input size='50' type='file' name='filename'><br />\n";
print "<input type='submit' name='submit' value='Upload'></form>";
}
?>
</div>
</div>
</body>
それは基本的に、私は多くの多くの試みの後に発見した例の適応です様々な方法で。
私のCSVは、データの2つの列、テキストである第1の1を有し、第2のデータベース内のテーブルもそう二つの列、最初に呼ばれる「テキスト」と第二の「数」
を持って の整数であります私が持っている質問は以下のとおりです。
- アップロードされているテキストだけですべてのフィールドに0と表示されており、それが起こる場合、私は、「」で囲んを終わるデータについて読み続ける理由
- 私はわからないんだけどどうやってソートするの?
- ヘッダーなどのCSVの最初のX行を無視するにはどうすればよいですか?
- は、このプロセス全体を通じて変更されたデータ形式ですか、グラフで使用する準備ができていますか?例えば一度データベースに置かれると小数点は小数点に留まるでしょうか?
私はあらゆることをカバーしていると思います。
EDIT:
ちょうど万レコードのアップロードのテストを行って、エラーました:
「致命的なエラー:30秒の最大実行時間を超え、」
任意の考え?
あなたに[読み込みデータINFILE](http://dev.mysql.com/doc/refman/5.1/en/load-data.html)を見ても、大きなファイルをアップロードする場合それはずっと速いです。 'LOAD DATA INFILE' /tmp/test.txt 'INTO TABLEテスト無視する1行;' – Fluffeh
@Fluffeh 私はその方法を使ってみましたが、何らかの理由でそれをPHPに組み込んでも機能しませんでした。最終的に大きなファイルになるので、速度は間違いなく便利です。 – Pidge
私の更新された答えをチェックしてください。 – jit