phpMyAdminでCSVでテーブルに冒頭のデータを除いて上書き更新する
CSVでデータを作ってMySQLにphpMyAdminでデータの挿入・更新するお話です
データの冒頭をスキップする
テーブルにデータを挿入するときに、エクセル等々で管理しているデータの場合冒頭にカラムの情報を記載するかと思うのですが、その冒頭部分をスキップしてphpMyAdminでCSVをインポートする方法
phpMyAdminによっては多少差異があるとおもいますが
- 対象のテーブルを選択
- インポートタブを選択
- インポート画面でファイルを選択(CSV)
- Partial import の項目の Skip とある数字を入力できる箇所でスキップしたい冒頭の行数を指定
- 実行
こういった手順になります
初回の場合はこれだけで良いのですが、CSVファイルで今後上書き更新していく場合にはもう少し手を加えなければいけません。
テーブルのどれかのカラムにユニークキーを設定する
CSVファイルのインポートで上書き処理ができるようにするには、各レコードにキーとなるなにかを記さないといけないので、それ専用のカラムをテーブルで設計置かなければいけません
大体のケースではNoとかで割り振っちゃうと思います
ユニークキーの設定が無いと同じものもCSVでインポートするたびに追加されてしまいます、またユニークキーを設定した場合はインポート時に同じユニークキーがテーブルに存在する場合は上書き処理をするにチェックをつけておかないとインポート自体が失敗してしまいます
テーブルにユニークキーを設定済みでのCSVファイルでのテーブルの更新手順
- 対象のテーブルを選択
- インポートタブを選択
- インポート画面でファイルを選択(CSV)
- 冒頭にカラム名とかを含む場合は Partial import の項目のSikpの数字を入力できるところで冒頭からスキップしたい行数を入力
- 「フォーマット特有のオプション」項目の「Update data when duplicate keys found on import (add ON DUPLICATE KEY UPDATE)」にチェックを入れることでダブっているデータ(ユニークキー)は上書き処理を行う設定となる
- 実行
この方法でphpMyAdminからデータベースの情報をCSVのインポートで手軽に更新ができるようになるのですが
一つだけ注意点があり、削除したデータ(行)は上書きもされずにスルーされるだけですのでデーターがTableの方には残ってしまいますのでその点は留意しておく必要があります。
そういったときは、一時的にストップさせてテーブルの中身をすべて削除してCSVを新規にアップロードし直す形が一番手軽になるんじゃないかと思います。
COMMENT