ユーザーが .csv ファイル (さまざまな連絡先管理プログラムからエクスポートされたもの) から連絡先をサーバーにアップロードし、それを mysql に保存できるようにしたいと考えています。SO などで読んだことから、MYSQL は LOAD DATA INFILE を使用してデータをインポートできます。また、クライアント側から取得するための LOCAL オプションがあるようです。私の 3 つの質問は次のとおりです。サーバーにファイルを取得するためにファイル アップロードを使用する必要がありますか、それとも LOAD DATA INFILE の LOCAL オプションを介して直接アクセスできますか? アプリケーションは連絡先を持つ複数のユーザーにサービスを提供するため、すべての連絡先を 1 つのテーブルに配置する必要がありますか? ユーザーごとに .csv ファイルの構造が異なるため、異なる .csv ファイルのフィールド名/スキーマの不一致を処理する最善の方法は何ですか?
暫定コード:
<html>
<body>
<form action="getcsvile.php" method="post"
enctype="multipart/form-data">
<input type="file" size=12 name="file" id="file" /><input type="submit" name="submit" value="Upload CSV File" /></form>
<body>
</html>
<?php
$userid = $_SESSION['userid'];
//error checking to make sure .csv file and other requirements met...then
//get extension, set to $ext
$target = "csvfiles/".$userid.".".$ext;
move_uploaded_file($_FILES["file"]["tmp_name"],$target);
//NEED TO PARSE DATA USING fgetcsv or something to examine, clean up csv data?
$sql = "LOAD DATA LOCAL INFILE '$target' INTO TABLE contacts FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES";// IS LOCAL right?
MySQL_query($sql);
$sql2 = "UPDATE contacts SET userid = '$userid';
MySQL_query($sql2);
echo "success;
これは正しいアプローチのように思えますか? さまざまなユーザーからのさまざまな csv ファイルに対応するのはどれくらい難しいでしょうか?
どうもありがとう。