質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

解決済

csvの文字コードがutf8なのにmysqlのテーブルに取り込むのにutf8じゃないと怒られる

HiroUchi
HiroUchi

総合スコア7

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

1回答

0評価

2クリップ

12247閲覧

投稿2018/12/06 16:02

編集2018/12/07 00:07

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
macのmysqlのcharctersテーブルにcsvの2000行ほどあるデータを取り込もうとしたが
以下のようにエラーが出ております。

発生している問題・エラーメッセージ

エラーメッセージ ERROR 1300 (HY000): Invalid utf8 character string: '' ▼12/7更新(※「エラー後に試したこと」参照) ERROR 1265 (01000): Data truncated for column 'team_id' at row 1

実行したこと

以下を実施し、上記エラーがでております。 ▼csvファイルの文字コード # file --mime character.csv character.csv: text/plain; charset=utf-8 ▼csv取り込んだ際のコード LOAD DATA INFILE '/usr/local/var/mysql/character.csv' INTO TABLE characters FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"' LINES TERMINATED BY '\r\n'; ▼mysqlの文字コード +--------------------------------------+------------------------------------------------------+ | Variable_name | Value | +--------------------------------------+------------------------------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/local/Cellar/mysql/8.0.12/share/mysql/charsets/ | | validate_password.special_char_count | 1 | +--------------------------------------+------------------------------------------------------+

エラー後に試したこと

以下を実施
character_set_client を utf8mb4 ⇛ utf8
character_set_connection を utf8mb4 ⇛ utf8
character_set_results を utf8mb4 ⇛ utf8

■12/7更新
①nkfコマンドで文字コードを変更

$ nkf -w /usr/local/var/mysql/character.csv > /usr/local/var/mysql/character_2.csv

②nkfコマンドで文字コード確認
$ nkf --guess /usr/local/var/mysql/character_2.csv
UTF-8 (LF)

②mysqlコマンドでcsv取り込み
mysql > LOAD DATA INFILE '/usr/local/var/mysql/character_2.csv' INTO TABLE characters FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"' LINES TERMINATED BY '\r\n';

③エラー
ERROR 1265 (01000): Data truncated for column 'team_id' at row 1

▼テーブルの情報は以下です
--------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| path | char(26) | NO | | NULL | |
| name | varchar(200) | NO | | NULL | |
| twitter_link | varchar(200) | YES | | NULL | |
| twitter_name | varchar(300) | YES | | NULL | |
| publishedFg | int(11) | NO | | NULL | |
| team_id | int(11) | NO | MUL | NULL | |
+--------------+--------------+------+-----+---------+----------------+

team-idは1〜37の値しか入っていないのですが、上記エラーがでました。

補足情報(FW/ツールのバージョンなど)

▼mysqlのバージョン
mysql Ver 8.0.12 for osx10.13 on x86_64 (Homebrew)

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

fu7mu4
fu7mu4

2018/12/06 16:11 編集

過去の類似質問に、https://teratail.com/questions/30608 がありました。そのときは読み込むファイルの文字コードを誤解していたというのが原因でしたので、一度 iconvやnkfなどで文字コードを確認していただいてよろしいでしょうか?また確認された際にはどのような方法で確認したかを書いていただけるとその後の回答がつきやすいと思います。
HiroUchi
HiroUchi

2018/12/07 00:09

アドバイスをありがとうございます。nkfコマンドにて、文字コードをutf8変更し、再度取り込みましたが、別なエラーがでました(※質問に記載)。
fu7mu4
fu7mu4

2018/12/07 14:43 編集

nkfコマンドでは改行文字がLFであるのに、LINES TERMINATED BY '\r\n' というのはCRLFではありませんか? この二つに整合がとれていないように見うけられます。
HiroUchi
HiroUchi

2018/12/10 02:54

ありがとうございます。ご指摘部分をCRLFに変えまして。csvファイルの中に絵文字が入っていましたので、「character_set_database」を utf8mb4 に、対象のテーブルのカラムを utf8mb4 に変えたところ取り込むことができました。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。