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 列のデータがあり、最初の列はテキストで、2 番目は整数です。データベースのテーブルにも 2 つの列があり、最初の列は「テキスト」、2 番目の列は「数値」です。
だから私が持っている質問は次のとおりです。
- アップロードされているテキストがすべてのフィールドで 0 と表示されているだけで、理由がわかりません
- データが "" で囲まれてしまうという記事を読み続けています。
- ヘッダーなどの CSV の最初の X 行を無視するにはどうすればよいですか?
- このプロセス全体でデータ形式が変更されていますか?それともグラフで使用する準備ができていますか? たとえば、小数はデータベースに配置されると小数のままになりますか?
これですべてがカバーされると思います。事前に助けてくれてありがとう!
編集:
10,000 レコードのアップロードのテストを行ったところ、次のエラーが発生しました。
「致命的なエラー: 最大実行時間の 30 秒を超えました」
何かご意見は?