2017-03-28 5 views
-2

背景:私を含む学生グループは、私たちの学校のメリットシステム用のウェブサイトを作成しています。私たちは基本的にhtml、css、php、またはSQLデータベースの経験はありませんでした。私はうまく管理していると言います。フィールドを維持しながらmySQLデータベースとPHPをマージする

ただし、データベースの更新に関する問題が発生しました。毎週、教室で更新されたcsvの学生用テーブルと、教育システム部門のすべてのテーブルをマージする必要があります。だから何千人もの学生がいて、それぞれが更新されたときには変更できるが、同じものにとどまる必要があるという特定の詳細がある。たとえば、更新するときに同じままにする必要があるメリットの数はありますが、年のグループやクラスなどの詳細は変更できます。問題は、このアップデートがcsvファイルで行われていることです。新しいファイルがデータベースに更新される必要があり、csvが順不同である可能性があります。だから私たちは、あるフィールドを同じにして他のフィールドを変更できるようにするソリューションを見つけようとしています。

LOAD DATA INFILEをユニークキーで試してみましたが、メリットを保存している間に他の詳細は無視され、新しく追加されたばかりの問題でした。

EDIT:生徒には、生徒のクラスを含むクラスフィールドがあります。インポートする際には変更する必要がありますが、CSVファイルにはないメリットフィールドは維持しておく必要があります。手動でインポートすることはできますが、実行には時間がかかると思われます。

私たちのコードは、途中でPHPになります。

TL; DR は、既存の学生の特定のフィールドのみを変更しても、新たな学生にあなたの助けを事前に

感謝を追加し、長い記事のために申し訳ありませんが、CSVファイルからのインポート/データベースをマージする方法を見つける必要があります。これは私の最初の投稿ですので、もし私が何か間違いをしたら私を許してください。

+0

あなたの質問はあいまいで不明です。それを修正する時間を取ってください: 'edit'リンクを使って、実際に何を意味するのかを正確に記述してください。 「特定のフィールドを変更する」とはどういう意味ですか? 「データベースをインポートする」とはどういう意味ですか? – arkascha

+0

あなたの古い値は、レコードがスキップされている可能性があるか、PK制約のためにこれらのレコードでクエリが実行されなかったため、メリットを含めて変更されませんでした(期待通りに保存されませんでした)。 – coderodour

答えて

0

のファイルの内容をは、CSVであるので、行ごとに読み取るPHPスクリプトが必要です。その後、各CSV行のプライマリキーの一意の識別子を使用してのプライマリキー値を持つレコードがデータベースに既に存在するかどうかを確認する必要があります。 データベースにその主キーを持つレコードが存在する場合は、UPDATEクエリを使用してメリットのみを更新します。 レコードがその主キーで見つからない場合は、INSERTステートメントを使用して、新しいレコードをデータベースに追加します。

メモ:太字のビットは、時系列で必要なステップです。

+0

答えをありがとう。多分8フィールドの学生がいる何千ものPHPスクリプトに関して、スクリプトは実行に時間がかかりますか? –

+0

このスクリプトを妥当な時間内に実行するには、insert文のすべての挿入と、準備された文を使用したすべての更新が必要です。このような操作、すなわちメモリ使用量、許可されたパケットサイズなどに対応するために、mysqlとphpの設定をtweekする必要があるかもしれません。 – coderodour

関連する問題