🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
MySQL

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

Q&A

解決済

1回答

365閲覧

CSVデータをmysqlにインポートできない

masaking

総合スコア30

MySQL

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

0グッド

1クリップ

投稿2019/09/19 05:34

mysqlにcsvデータをインポートできずに困っています。

mysql for excelを使い、10000行ほどあるデータをインポートとしようとした結果、パケットの量が許可されてる量よりも多い(エラー1153)が出たので、自分で調べたところ、C:\ProgramData\MySQL\MySQL Server 8.0のmy.iniファイルを書き替えました

max_allowed_packet=4M の4mを40mに書き換え、サービスでmysqlを停止して、開始しようとしたところ、サービスは起動して停止しました、と出たため、使えなくなりました。

原因究明のため、バックアップでとってたmy.iniファイルに置き換えるとサービスは開始できました。
少しでもmy.iniをいじるとサービスが起動しなくなります。

サービスに自分でmysqlを登録しなくてはいけないとあったため、いったん削除して、また登録しました。

コマンドプロンプトで

C:\ProgramData\MySQL\MySQL Server 8.0>mysqld --remove MySQL80

で消して、

C:\ProgramData\MySQL\MySQL Server 8.0>sc create Mysql binPath= "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe"

でサービスを作成したところ、エラー1053サービスは開始要求に制限時間内に応答しませんでした、と出ました

お手上げです。
経理志望で会社に入ったのになぜ管理科にいるのだろう...

mysql80
windows10pro
x64

そのほか、抜けている情報もあると思いますのでご連絡ください。
よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

max_allowed_packet=4M の4mを40mに書き換え、サービスでmysqlを停止して、開始しようとしたところ、サービスは起動して停止しました、と出たため、使えなくなりました。

であれば、max_allowed_packet=4Mは書き換えずに、

mysql for excelを使い、10000行ほどあるデータをインポート

を先頭100行くらいにして、インポートできるか試してください。

投稿2019/09/19 06:03

nandymak

総合スコア799

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

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

masaking

2019/09/19 08:08

100行でインポートを試しました。 できました。 あとは、同じ作業を100回だけ繰り返せばよいでしょうか?
Orlofsky

2019/09/20 01:48

残りの全行をimportしては?
masaking

2019/09/20 01:51

エラー1153がやはり出たので無理でした
nandymak

2019/09/20 02:05

コメントしたつもりでしたが、書き込まれていませんでした。 1行のcsvのサイズ(Byte数)はどれくらいですか? 現状1回あたり4MBを超えるとエラーのようなので、とりあえずデータを入れるには 4MB÷1行のByte数で概算の件数を割り出して、その件数にcsvを分割して入れれば入るはずですよね。 100回は大変なので、なるべく少なくなるけど、制限までに少し余裕があるくらいがいいですよね。 分割したファイルの取り込みが漏れたりダブらないように注意してください。 それとは別に、4Mはどこまで増やせることができるかは調べたほうがよいでしょう。 Qiitaとか見ていると8M/16Mあたりは大丈夫のようです。 PCのメモリはもっと搭載していると思うので、ほかのパラメータとの絡みで40Mはダメなのか、 my.iniの修正ミスかもしれません。
nandymak

2019/09/20 02:46

Lenbするならカンマで区切らずにA列に放り込んでB列に式を入れてください。 それで1行あたりのMaxとAVGを取って4Mbを超えないような件数に分割してください。
masaking

2019/09/20 02:51

すいません、各セルごとのバイト数をLENB関数で出し、その結果のセルAH2からBO2に対して合計し、それを300行下におろした後average関数を使うことにより、行当たり平均1236バイトだということがわかりました。検索した結果、4MBは、4000000バイトと等しいということがわかったので、だいたい余裕を見て3000行ほど一括で登録できると計算できました。 また、実際にやってみた結果登録することができました。 3000行あたりなら4回同じ作業をするだけなので、まだ何とかなりそうです。
nandymak

2019/09/20 03:09

csvファイルをExcelに取り込んだらカンマが見えなくなるので、項目ごとのLenbを取るとカンマの分だけ少なく見えますので、若干注意が必要です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問