目次
失敗1「Incorrect integer value」
のエラーで失敗する場合です。
原因は文字どおり、int型id列が無効(=空欄とか)の場合です。
※画像上部「インポートは正常に終了しました」と出ますが、実際はインポート失敗しています
普通の列ならあまり無いですが、
int型id列を主キー、かつ、AUTO_INCREMENTに設定していると、
「どうせ空欄でも自動で値が埋まるから」と空欄にしがちで、このエラーにつながります。
例えば、以下のようなCSVデータ。
失敗1の対処法
int型id列の全部に数字を入れるだけです。
失敗2「CSV入力のカラム数が不正」
のエラーで失敗する場合です。
原因は文字どおり、
データの列数が、テーブルの列数と一致しない(=多すぎor少なすぎ)、です。
では何故一致しないのか?
その可能性の1つは、データ内に「,(カンマ)」が使われている事です。
例えば、以下のようなCSVデータ
データ内のカンマ(,)が、CSV区切り文字のカンマ(,)と誤読される為、
列数が多すぎる事になってしまいます。
失敗2の対処法
phpMyAdminでCSVインポート時、「カラム囲み記号」に「”」を設定する事です。
以下の画像。
ただ、この設定自体はデフォルトです。
なので、デフォルト設定を変更しなければ出ないエラーです。
それでも出てしまう理由は、各々の環境(=CSVデータの内容)によっては
「カラム囲み記号」を空欄に設定
しないとエラーが出る事があり、空欄に設定するよう案内するWebページも存在しており、
設定を変更している為と思います。
失敗3「PRIMARY 重複」
のエラーで失敗する場合です。
原因は文字どおり、主キー重複ですが、何故それが起こるのか?
何回かインポート失敗する内に、一部のデータがインポート成功してしまい、
それらの成功データと重複する為です。
失敗3の対処法
単純に、テーブルのデータを全部削除すればよいです。以下の手順。
その他ありそうな失敗
全部の失敗を挙げるとキリがないので、
この記事では、ネット検索しても情報が出なかった失敗について、書きました。
ほかには、文字コードをUTF-8以外(=Shift_JISとか)に設定すると失敗する、と聞きます。
前提の環境
最後に、前提の環境を説明します。
順序的に、最初に説明すべきでしたが、
「それより早く対処法を知りたい」という方が多いと考え、最後に回しました。
インポート先のテーブル
- テーブル名「test_data_table」
- 主キー:int型、AUTO_INCREMENT付与
- 他:varchar型255字
- その他の設定は、phpMyAdminで新規テーブル作成時のデフォルト設定
インポートするCSVデータ
- データ内容は、上記画像
- ファイル名「2021-10-14-test-data.csv」
- 文字コード「UTF-8」
インポート手順
以下の画像のとおり。