「phpMyAdmin」でCSVインポート失敗する場合の対処法 一例

IT系

失敗1「Incorrect integer value」

#1366 – Incorrect integer value: ” for column `●●(DB名)`.`test_data_table`.`id` at row 1

のエラーで失敗する場合です。
原因は文字どおり、int型id列が無効(=空欄とか)の場合です。

※画像上部「インポートは正常に終了しました」と出ますが、実際はインポート失敗しています

普通の列ならあまり無いですが、
int型id列を主キー、かつ、AUTO_INCREMENTに設定していると、
「どうせ空欄でも自動で値が埋まるから」と空欄にしがちで、このエラーにつながります。

例えば、以下のようなCSVデータ。

int型id列(主キー かつ AUTO_INCREMENT)が空欄のCSVデータ。Excelで開いた

失敗1の対処法

int型id列の全部に数字を入れるだけです。

失敗2「CSV入力のカラム数が不正」

CSV 入力のカラム数が不正です (行: ●●)

のエラーで失敗する場合です。
原因は文字どおり、
データの列数が、テーブルの列数と一致しない(=多すぎor少なすぎ)、です。

では何故一致しないのか?
その可能性の1つは、データ内に「,(カンマ)」が使われている事です。
例えば、以下のようなCSVデータ

CSVデータをExcelで開いた状態。3行3列目のデータが「テストデータ32a,32b,32c」。カンマ含み

データ内のカンマ(,)が、CSV区切り文字のカンマ(,)と誤読される為、
列数が多すぎる事になってしまいます。

失敗2の対処法

phpMyAdminでCSVインポート時、「カラム囲み記号」に「”」を設定する事です。
以下の画像。

ただ、この設定自体はデフォルトです。
なので、デフォルト設定を変更しなければ出ないエラーです。

それでも出てしまう理由は、各々の環境(=CSVデータの内容)によっては

「カラム囲み記号」を空欄に設定

しないとエラーが出る事があり、空欄に設定するよう案内するWebページも存在しており、
設定を変更している為と思います。

失敗3「PRIMARY 重複」

#1062 – ‘●’ は索引 ’PRIMARY’ で重複しています

のエラーで失敗する場合です。
原因は文字どおり、主キー重複ですが、何故それが起こるのか?

何回かインポート失敗する内に、一部のデータがインポート成功してしまい、
それらの成功データと重複する為です。

失敗3の対処法

単純に、テーブルのデータを全部削除すればよいです。以下の手順。

その他ありそうな失敗

全部の失敗を挙げるとキリがないので、
この記事では、ネット検索しても情報が出なかった失敗について、書きました。

ほかには、文字コードをUTF-8以外(=Shift_JISとか)に設定すると失敗する、と聞きます。

前提の環境

最後に、前提の環境を説明します。

順序的に、最初に説明すべきでしたが、
「それより早く対処法を知りたい」という方が多いと考え、最後に回しました。

インポート先のテーブル

  • テーブル名「test_data_table」
  • 主キー:int型、AUTO_INCREMENT付与
  • 他:varchar型255字
  • その他の設定は、phpMyAdminで新規テーブル作成時のデフォルト設定

インポートするCSVデータ

CSVデータをサクラエディタで開いた状態
CSVデータをExcelで開いた状態
  • データ内容は、上記画像
  • ファイル名「2021-10-14-test-data.csv」
  • 文字コード「UTF-8」

インポート手順

以下の画像のとおり。