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

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

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

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

MySQL

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

MacOS(OSX)

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

Q&A

解決済

1回答

18512閲覧

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

HiroUchi

総合スコア7

CSV

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

MySQL

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

MacOS(OSX)

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

0グッド

2クリップ

投稿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)

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fu7mu4

2018/12/06 16:11 編集

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

2018/12/07 00:09

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

2018/12/07 14:43 編集

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

2018/12/10 02:54

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

回答1

0

自己解決

csvの一部に絵文字が存在し、DBの設定がutf-8であったため、エラーとなっていたため、
utf8mb4に変更し、取り込みが成功しました。

投稿2019/02/09 12:58

HiroUchi

総合スコア7

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問