2009-04-03 11 views
1

ねえ、ここに私の問題があります。私はDrupalモジュールを書いています。ユーザーは、フォームのサーバーに電子メールアドレスのCSVリストをアップロードします。 CSVファイルとDBから一意のアドレスのリストを取得するには、データベースでJOINを実行する必要があります(いいえ、スパムではありません:)。 php(特にdrupal)のCSVファイルでSQL結合を行うにはどうすればよいですか?

アップロードされたCSVファイルを、PHPのデータベース内のテーブルでSQL結合することができる形式にするにはどうすればよいですか?

+0

CSVには通常の構造がありますか? –

答えて

2

あなたは直接LOAD DATA INFILE

を使用してそれを読み込むことができますまたは、あなたが好みなら、fgetcsv()とPHPでそれを読んで、あなたの心のコンテンツへのmunge、それらは一時テーブルに挿入します。

+0

1つの質問:MySQLにアクセスできるようにするには、どこにファイルを置く必要がありますか? – jergason

+0

私はmysqlが絶対パスを与えればどこにでもファイルにアクセスでき、mysqlユーザはそのファイルに対して読み込み権限を持っていると信じています –

1

"一時的な"テーブルにデータを読み込むと、処理が非常に簡単になります。結合を高速化するために、表に索引を適用したいが、データをロードする前に索引を削除してから後で再作成するほうが速い場合があります。 (すべてのパフォーマンスアドバイスと同様に、より複雑なソリューションを採用する前に独自の結果を測定してください)

+0

一時テーブルにどのようにロードしますか?ファイルのアップロードごとに新しいテーブルを作成し、結合を完了したら削除してください。 – jergason

+0

申し訳ありませんが、具体的には、ファイルから一時テーブルを作成する方法はありますか?私はテーブルを作成する方法を理解していると思いますが、アップロードしたCSVファイルからどのように書き込むのですか? – jergason

+0

CSVデータが常に同じ形式である場合は、「一時的」とみなし、各ロード後にその内容をTRUNCATEする通常の表を作成することもできます。データを一括してロードするのはRDBMS固有ですが、ファイル内の各行をPHPのINSERT文に常に変換することができます。 – yukondude

関連する問題