さくらインターネットのMYSQLのDBに大容量(約13MB)のCSVファイルをアップロードする方法を教えて下さい。
下記(1)~(3)のようにいくつかの方法を試しましたが、結果的に全件をアップロードができていません。
(1)最初にレンタルサーバーのさくらインターネットでサーバーを借りましたが、phpMyAdminにCSVファイルをアップロードしようしました。
kuin_mstという名前のテーブルを作成後、このテーブルを選択してインポート画面からインポートするCSVファイルを選択し、設定として「ファイルの文字セット」をutf8に、
「インポートするファイルの形式」のCSV形式のフィールド区切り記号をカンマに、フィールド囲み記号を空白に指定しました。
そして、実行を押すと、しばらくして「Internet Explorerではこのページは表示できません。」が表示されました。
これに対してF5キーを押して再実行すると元の画面に戻り、kuin_mstテーブルの件数を見ると、122915件中58114件がアップロードされてました。
他のインポートするファイルの形式の「LOAD DATA する CSV」や「SQL」も試しましたが、結果として何もアップロードされませんでした。
考察:13MBのデータを3回分に分割してこの作業を行えば目的が達成できるように思いますが、結果として入れるべき全件のデータがアップロードされたのかを検証する方法が分かりません。
(2)さくらはSSHが使えるのでpoderosaをダウンロードしてサーバーにアクセスしましたが、SQLのみ記述されたtest1.txtをアップロードするコマンドを次のように投入したら
テーブルの削除や作成は成功しエラーが発生しませんでした。
コマンド
「mysql -h mysql○○○.db.sakura.ne.jp -u アカウント名 -p DB名 < test1.txt」
しかし、このtest1.txt内に「LOAD DATA INFILE './KEN_ALL.CSV' INTO TABLE kuin_mst FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';」
の一行を加えて実行すると「ERROR 1045 (28000) at line 2513: Access denied for user 'ユーザー名'@'%' (using password: YES)」というエラーが発生します。
このエラーを調べると「コンソールからデータベース接続する時にパスワードが間違っている」と説明しているサイトがありましたが、何度確認しても間違えていませんし、間違えていたら「LOAD DATA ~」の行を
追加していない状態の処理で同じエラーが出るはずです。
ちなみに、自宅PCのWEBサーバーで、「LOAD DATA ~」を追加したtest1.txtをコマンドプロンプトで実行するとアップロードが正常に行われるのでCSVファイル自体は問題がないはずです。
※KEN_ALL.CSVファイルは、郵便番号-住所データ(utf-8保存で約13MB)でレコードはカンマ区切り(例として1レコード抜粋→640941,ホッカイドウ,サッポロシチュウオウク,アサヒガオカ,北海道,札幌市中央区,旭ケ丘)
となっています。
※test1.txtとKEN_ALL.CSVの両ファイルは/home/アカウント名の階層に置いてこの処理を実行しました。
結果として何が原因でアップロードができないのかがよくわかりませんでした。
(3)BIGDUMPという大容量ファイルを分割してDBにアップロードできるツールを見つけたので、いろいろと説明があるサイトを参考にブラウザにて実行したらKEN_ALL.CSVファイルがFilenameの欄に表示されました。
同画面でstart import1をクリックしましたが、「You have to specify $csv_insert_table when using a CSV file. 」というメッセージが出てきました。
結果として、この意味がよくわかりませんでしたが、カンマ区切りのみのCSVファイルだけをアップロードすることはできないのかもと思いました。
以上、悪戦苦闘しても解決できないのでどうかアドバイスを下さい。
宜しくお願いします。
■環境
UNIX系 OS FreeBSD
Apache 1.3.x
PHP 5.2.17
phpMyAdmin 3.3.10.3
MySQL 5.1
MySQL 文字コード UTF-8
bigdump ver.0.34b
No.5ベストアンサー
- 回答日時:
#2 です。
Windows 形式のファイルになっていて改行コードが失敗の原因だとしたら・・・・・なのですが、LOAD DATA の最後にある '\n' を '\r\n' にしてあげればたぶんロードできるようになりますよ。
これでもロードできないのであれば、他の原因かもしれません・・・・・・・。
ご回答ありがとうございます。
'\n' を '\r\n' に変えてコマンドを投入してみましたが、「LOAD: Command not found.」がでました。
色々と調べているとMYSQLにログインできましたので、そこで次のコマンドを投入したらキレイに全件アップロードできました。
LOAD DATA LOCAL INFILE 'ぱす/KEN_ALL.csv' INTO TABLE DB名.kuin_mst character set 'utf8' FIELDS TERMINATED BY ',';
皆さまには解決するまでお付き合いいただき感謝しています。
中でも一番多く回答をしてくれたMAXIMAXさんをベストアンサーとさせていただきます。
ありがとうございました。
No.4
- 回答日時:
> 「ERROR 1045 (28000) at line 2513: Access denied for user 'ユーザー名'@'%' (using password: YES)」というエラーが発生します。
ユーザーにFILE権限がないと LOAD DATA INFILE に失敗するそうです。
grant file on *.* to ユーザー名@localhost;
で権限を与えるとよさそうです。
LOAD DATA INFILEにはFILE権限
http://d.hatena.ne.jp/kaishitaeiichi/20101114/12 …
ご回答ありがとうございます。
test1.txtの中のLOAD DATA文の直前に「grant file on *.* to ユーザー名@localhost;」を
入れましたが、やはり「Access denied for user 'angelito'@'%' (using password: YES)」というエラーが出てしまいます。
MYSQLにログインしてからgrant文を実行すればよいのかと思い、
「mysql -u ユーザー名 -p」を実行してみましたが、
「Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)」が出てしまいます。
この解決法を調べるとmy.cnfをいじらなければいけない様な感じがありますが、レンタルサーバーなのでいじれないように思えます。
No.3
- 回答日時:
phpMyAdminはphp経由で一旦ファイルで受けてからロードするのでその制限を受けている可能性はあります。
逃げ方はすでに指摘されていますがSCPかSFTPなどでファイル全体をサーバー側に送ってしまいLOAD DATAするのが確実だと思います。
改行コードはサーバー上ならhexdump | less で0D 0A になっているか0Aなのか判別できます。
ご回答ありがとうございます。
さくらはSSHが使えるので、SCPとSFTPを調べたらSFTPの方がよさそうだと思い、FileZillaをダウンロードすることにしました。
しかし、よく分からないのが最新のダウンロードファイルには下記の5つがあるのですが、
どれをダウンロードすればよいのでしょうか?
私のPCのosはVISTAです。
FileZilla_3.5.1_x86_64-linux-gnu.tar.bz2
FileZilla_3.5.1_win32.zip
FileZilla_3.5.1_win32-setup.exe
FileZilla_3.5.1_src.tar.bz2
FileZilla_3.5.1_powerpc-apple-darwin9.app.tar.bz2
No.2
- 回答日時:
#1 です。
それがエラーの原因かどうかはさておき、なのですが・・・・・・。簡単に見分ける方法として、CSV ファイルを Windows 上のメモ帳で開いて、ちゃんと改行されて見えるなら、改行コードは'\r\n'になっています。UNIX の '\n' 形式を Windows 上のメモ帳で開くと、改行されずに全部の行がつながって見えます。バイナリエディタでみたり、改行コードの表示に対応したエディアなどで調べるのもひとつの手ですが・・・・・・。
UNIX 上でなら、vi でファイルを開いて、行の最後に ^M が表示されているようなら、Windows 形式の改行になっています(全部の vi でそうなるか、ちょっと自信がありませんが)。
-----
改行コードについて、Windows 上でのテキストファイルは、通常'\r\n'形式が標準ですが、UNIX では '\n' 形式が標準です。Windows 形式のファイルを UNIX で扱うと、この'\r' も一文字文のデータとして扱われることが多く、誤動作の原因になります。このため、両方で扱うテキストについて、改行コードはきちんと把握しておく必要があります。
ただし、SCP などを使って転送する場合、テキストモードだと改行コードの自動変換などが起きることもありますので、間でファイルのやりとりするときも、気を付けないと意図せず改行コードが変わることがあります。
度々ありがとうございます。
CSV ファイルを Windows 上のメモ帳で開いて、ちゃんと改行されてみえます。
改行コードにも意識してSFTPあたりを使ってアップロードしてみます。
No.1
- 回答日時:
IE からのインポートだと、もしかするとインポートの処理時間がかさむと IE がタイムアウト起こして中止されてしまうのかもしれません。
エラーの内容自体はたしかにちょっと「?」な感じなのですが、実際にエラーの出ている行はなにもおかしなことは見当たらない、ということでしょうか??
状況から考えると、LOAD DATA で正常にインポートできるサーバとサクラのサーバの間で、なにか環境に違いがあるのではないかな、と思います。一応かかれてはいなかったのでちょっと質問させていただきたいのですが、CSV などで気になるのは、改行コードくらいかな・・・・と思うのですが、CSV は Windows 形式の改行(実態は '\r\n')ではなく、UNIX 形式の改行(実態も '\n' だけ)になってはいますでしょうか?LOAD DATA の最後の '\n' を '\r\n' で試してみてはいかがでしょうか。
ご回答ありがとうございます。
実際にエラーの出ている行はなにもおかしなことは見当たらないです。
CSVの改行コードについて調べようとエディッタ(Apsaly)でCSVファイルを開いていろいろと表示
形式を変えてみましたが、Windows 形式の改行が'\r\n'となっているのも確認できませんでしたし、
サーバーの中にあるCSVファイルをメモ帳で開くをして開いても改行コードがみれませんでした。
初歩的な質問で申し訳ありませんが、改行コードの実態の確認方法を教えて下さいm(__)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データベースファイル(.db)を開...
-
DBファイルの中身を直接見れな...
-
SQLデータベースへのリンクがあ...
-
ODBCを使用する場合のファイルD...
-
同じSQL文で極端に検索が遅くな...
-
Notesの「notes.ini」内の環境...
-
MYSQLのDBに大容量のCSVをUP...
-
SQLで特定のテキストの文字を読...
-
MySQL6.0でのデータ保存場所
-
ダンプファイルから特定のテー...
-
PL/SQLで@ファイル名が反応しま...
-
PL/SQLをWindowsのBATファイル...
-
あるDBから別のDBのテーブルをs...
-
バッチファイルではパスワード...
-
comment on columnについてわか...
-
MySQLで連続csvファイルを読み...
-
sql*loader 数値のロード
-
utf8bomとutf8mb4の違いがいま...
-
SQLServerのselect文でデータ数...
-
MySQL Date型にNULLが設定でき...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データベースファイル(.db)を開...
-
DBファイルの中身を直接見れな...
-
同じSQL文で極端に検索が遅くな...
-
ODBCを使用する場合のファイルD...
-
Access2010でアクセス制限をしたい
-
パラメータファイルが壊れたと...
-
badファイルの内容を知る方法
-
sqlファイルを分割するソフトは...
-
DB2の文字化け
-
batでsqlplusによる前月データ...
-
SQL*Loaderで桁数チェック
-
SQLデータベースへのリンクがあ...
-
mysql.sockを消してしまった
-
SQLServer2005 セカンダリファ...
-
SQLServer2005のネットワークド...
-
ダンプファイルから特定のテー...
-
こんにちは。Access上でExcelデ...
-
rmanで別ホストへリストアする...
-
ファイルからのデータ更新について
-
サーバーに接続できない
おすすめ情報