• 締切済み

データのインポートの速度について

mysqlの1個のテーブル(約1万行)をphpMyAdminでエクスポートしました。エクスポートは一瞬で終わりました。 それを再びphpMyAdminからインポートしようとしたのですが、データが重いらしくタイムアウトのエラーが出てしまいました。 sqlファイルを開いてみると、テーブルへのinsert文が約200行ずつのかたまりごとに区切られてしました。 きっとphpMyAdminの方で、エクスポートする時、「これくらいのかたまりずつ区切っておかないと、スムーズにインポートできなくてエラーになっちゃうよ」と気を利かせて区切ってくれているのだろうと思います。 仕方ないので、sqlファイルを「約200行ずつのinsert文」に分割して、phpMyAdminからインポートしました。 全部で1万行ほどのデータなので、50回ほどその作業を繰り返しました。 エクスポートはスムーズだったので、インポートがこんなに手間がかかるとは思っていませんでした。 最初にその1万行のデータをテーブルに読み込ませたのは、別のcsvファイルを load data infile したり、項目の並び順を入れ替えて insert したりするphpファイルを書いたのですが、さほど重くもなくスムーズに処理できました。 phpMyAdminを使わない方法の方が圧倒的に早い気がするのですが、大きいデータをインポートする際のスムーズな方法がありましたら、アドバイスいただけますでしょうか?

みんなの回答

回答No.2

MySQL、phpMyAdminのそれぞれのバージョンを教えてください。 >それを再びphpMyAdminからインポートしようとした データは、0件の状態でですか? >sqlファイルを開いてみると、テーブルへのinsert文が約200行ずつのかたまりごとに区切られてしました。 「区切り」とは、具体的にどういう記述で区切られているのでしょうか? load data文は、insertより効率的に行える機能です。 また、insert文を使う場合は、「isert into 表名 values(1行目の値リスト),(2行目の値リスト)」といった1回のinsert文で複数行を格納する方法が性能を出せることは実証されています。

全文を見る
すると、全ての回答が全文表示されます。
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

インポート用のSQL文を書いたファイルを用意していて、 コマンドラインからmysql -u ほげ -p <data.sqlなどとして 取り込むと効率がいいはずです

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • phpMyAdminでのデータのインポートについて

    はじめまして。 レンタルサーバーで、MySQLを利用しています。 利用しているレンタルサーバーは、TELNETなどは利用できず、MySQLのデータベースを管理するのに、phpMyAdminを利用するようになっています。 用意したCSVファイルをサーバーのデータベースにインポートしたら、csvファイルが2MBを超えており、phpMyAdminの管理画面のインポートからは、2MB以内に分割しないとアップできませんでした。 分割するのが面倒なので、1回でインポートできないかと思い調べたら、 SQLで、LOAD DATA INFILE でインポートできないかと思い試してみました。 最初は、LOCALというのを入れずにやったらエラーが出たのですが、これは、同じサーバーにアップされたファイルからインポートというこなので、権限がないので無理ということがわかりました。 そこで、LOCALをつけて試しました。 ●試したSQLの内容 LOAD DATA LOCAL INFILE 'c:\mihon.txt' REPLACE INTO TABLE test FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'; 上記をphpMyAdminのSQLのとろこで、実行したのですが、エラーなどは表示されずに完了するのですが、データはインポートされていませんでした。 レンタルサーバーで、phpMyAdminを利用している場合に、LOAD DATA INFILEでファイルをインポートできないのでしょうか?上記のSQLの書き方に問題があるのでしょうか? 初心者なのであまりうまく説明できませんが、大容量のCSVファイルをphpMyAdminからアップするには、なにかよい方法はありますでしょうか? ご回答よろしくお願い致します。 ●サーバーの環境 ・MySQL利用可能で、phpMyAdminでのみ利用可能 ・データベースは、ユーザーサーバーとは別に設置 ・MySQLのバージョンは、4.0.26 ・phpMyAdminのバージョンは、2.7.0

  • データのインポートについて

    SQL Server 2005 Developer Editionを使っています。 データのインポートに関して、ご教授をお願い致します。 ■質問 インポート(データベースを右クリックし、【タスク】より 【データのインポート】を選択している)機能について、 エラーを発生させずに、インポートをすることができるのか。 ■状況 エクセルにデータをエクスポートしたものを、インポートしようと したときに、エラーが発生します。そのテーブルデータは、 SQLでインサートすることはできるものの、インポート機能を使って インサートをすることができません。 ■知りたいこと ・インポートができない理由について。  ⇒インポートができる方法について。 ・インポート機能は、エラーがよく発生するものなのか。 以上、ご教授をお願い致します。

  • phpMyAdminからphpMyAdminへのデータ移行

    レンタルサーバーにあるMySQLのデータをphpMyAdminからエクスポートし、ローカルホストにあるMySQLにphpMyAdminのSQLでデータをインポートしようとしています。 方法は以下の通りです。 レンタルサーバーのphpMyAdminを開き、エクスポートしたいデータベースを選択します。 エクスポートを開き、 全選択 SQL 構造: 「DROP TABLE」を追加 「IF NOT EXISTS」を追加 「AUTO_INCREMENT」値を追加 逆クオートでテーブル名やフィールド名を囲む データ: 完全な INSERT 文を作成する バイナリフィールドは 16 進数を使用する エクスポート形式:INSERT ファイルで保存する ファイル名テンプレート:__DB__ テンプレートを覚える 圧縮無し SJISエンコーディングへ変換する で、実行します。 8.43 MB (8,846,019 バイト)37602行 からなる膨大なsqlファイルが作成されます。 次にローカルホストのphpMyAdminを開き、インポートしたいデータベースを選択します。 SQLを開き、 参照より、エクスポートしたsqlファイルを読み込み 圧縮:Autodetect エンコーディングnon で、実行します。 実行の結果、 「SQLクエリー無し」 のメッセージで、SQLが終了します。 もちろん、データベースは移行されていません。 レンタルサーバーのMySQLをローカルのAccessでデータ加工し、レンタルサーバーのMySQLに戻すという作業をしたいだけなのですが(ローカルでバックアップも取っておきたい)、何か解決策はありませんでしょうか?

  • AUTO_INCREMENTのフィールドにインポートするには?

    データの入っていないテーブルにphpmyadminからテキストファイルをインポートしようとしています。 下記のようなinsert文が3000行ぐらいあります。 INSERT INTO `table` (`id`, `name`, `yomi`) VALUES (■,阿部,あべ); 上記のidフォールドにAUTO_INCREMENTが設定されています。 ■にはどのような値をいれればいいのでしょうか? 試しに連番で数字を振ってみたのですがエラーになってしまいました。

    • ベストアンサー
    • MySQL
  • CSV fileを指定してSQLへimport

    現在どうにかしてCSV fileのある一定の行と列を除いて SQLへimport出来ないかと困っています。 内容は: Excelで記入欄を作り他の人に記入してもらい 記入欄に記入してもらった情報を 反映させたいSQLのテーブル反映させたい。 環境 Win全般 dbisql Notepadに書いたtest-sql構文です --## test-import insert into test.test_def(obj_num, name_1, name_2, etc_1, etc_2) --##ここで指定したいSQLテーブルを指定し LOAD DATA INFILE 'd:\\test\\test.csv' --##ここで読み込ませたいCSVファイルを指定し FIELDS TERMINATED BY ',', LINES TERMINATED BY '\r\n' --##ここでCSVの形式を認識させ with(a,"b" filler, ・・・・と この辺で行き詰っています。。。 列1と行Aには入力してもらいたい説明を入力したいです。 (importしたくない列と行になります) 列2以降の行Bから行Gまでの5つの情報をimportしたいという状況です。 (列3、列4と次々B、C、D、E、F、Gに入力してもらう) 状況が解り難かったらすみません。 よろしくお願いします。

  • 改行を含んだデータのインポート

    SQL Server 2005 Developer Editionを使っています。 インポートについて、皆様の知識のご教授をお願いします。 (1)、(2)と二つありますが、どちらか一方の回答でも 構いませんので、よろしくお願いします。 (1)Excelインポートによる取込について まず、Excelにテーブルデータをエクスポートしました。 データには、改行されているものレコードもあります。 そのExcelファイルをエクスポートしたテーブルに インポートしようとすると、エラーが発生します。 また、改行されているデータのレコードだけを 手動でコピー&ペーストしても、貼り付けることが できない状態です。さらに、Excel上のデータを直接コピーし、 該当のレコードの箇所に張り付けても、1行目だけしか 貼付けができない状態です。 (2)テーブル間の改行を含むデータ移行について AとBという、テーブル名だけが異なり、列名やデータ型が 同じテーブルだとします。 ここで、BからAテーブルへデータ移行させる際に、 改行されているデータについても、正常に移行できるように するには、どういう手順を踏めばいいか教えて頂きたく思います。 Bテーブルの列を全てコピーし、Aテーブルに貼り付けても、 うまく貼り付けることができませんでした。 改行されているデータは、どうやったら、テーブルに インポートできるのかを教えて頂けないでしょうか。

  • insertを用いてテーブルにレコードを追加することができるのにもかか

    insertを用いてテーブルにレコードを追加することができるのにもかかわらず、load data infile を用いるとerror1366と表示されてしまいます。解決方法を教えてください。 Windows7 mysqlは最新版を使っています。 インストールしたそのままの状態だと、insertを用いて日本語を挿入しようとするとerror 1366と出てしまってましたが、my.iniを書き換えることによってinsert table1 values (1,'ああ');といった操作でエラーが出ることはなくなりました。 しかしcsvファイルをload data infileを用いてインポートしようとすると、またerror 1366が出てしまいました。 インポートしようとしたファイルには日本語が書かれています。 英字だけのファイルを同様にインポートすると、エラーは出ませんでした。 <table1> id int(15) name varchar(255) 1,a 2,b 3,asdf … はインポート可能 。また insert table1 values (1,'あ'); も正常に動作。 1,あ 2,い … をインポートするとエラー。 これができないと先に進めません・・・ ご教授お願いします。

  • 複数のCSVファイルの一括インポートについて

    CSVファイルをインポートしたいと思っているのですが、 複数のファイルをいっぺんに複数のテーブルにインポートする方法が わからず困っています。200行8列の2000ファイルを、 テーブル1,テーブル2,テーブル3・・・・テーブル2000にそれぞれ 1ファイルずつを一回のSQL文でインポートするやり方です。 毎日ほぼ同じ量のデータをインポートする必要がありますので、 2000ファイルをファイル名などの固有の情報を付加し連結して、 1ファイルにしてしまい、1テーブルにインポートする方法だと SELECT文をかけたときに取得する時間がとてもかかってしまうような 気がしますので、、、

    • ベストアンサー
    • MySQL
  • 【ACCESS】インポート定義を使わないCSVインポート

    ACCESS VBAにてMDBにSQL文でCSVデータをINSERTしようとしています。INSERT自体はうまくいったのですが、データの型をうまくそろえられません。2日程ネットサーフィンしているものの良いサンプルを見つけられません。有識者の方、ご存知でしたら是非教えてください! まず、CSVデータは以下のようなものです。 ===aaa.csv=== 00000001,2009/1/31 00000002,2009/1/31 ・ ・ A000001,2009/1/31 Z000002,2009/1/31 ========== これを 既存テーブル:aaa_TBLに取り込ませたく、以下のSQL文を書きました。 INSERT INTO aaa_TBL(カラム1,カラム2) SELECT FORMAT([aaa#CSV].F1,'0000000'),[aaa#CSV].F2 FROM aaa#csv IN 'C:\' 'Text;HDR=NO' これにて「0000001」と「000002」等のレコードは正常に取り込むことができましたが、「A000001」「B000002」等のデータは取り込まれず、NULLにて登録されておりました。 (aaa_TBL自体はカラム1=テキスト型、カラム2=日付型でCreateされております。) これを回避したく、いろんなサイトを訪問したのですが、ほとんどがインポート定義を使った方法を推奨しておりました。 しかしながら、私にはどうしてもインポート定義が理解できないんです! 「VBAにて○○.iniを作成する方法」などをよく見かけるんですが、できるだけ他の方法を検討したいと考えております。(今後、ACCESS VBAから他言語への乗り換えを考えているとか、他CSVにてインポートされるテーブルの数が30個程あるので、インポート定義ファイルの管理がつらいな・・・とか色々他にも理由はあるんですが・・・・) 何か良い方法はないでしょうか?! やはりインポート定義を作らないとだめでしょうか?! その場合、簡単なサンプルコードなどを頂けますと非常に助かります。。。(MSサイトのサンプルコードは理解できませんでした。。。) まだVBAを勉強し始めて2週間なので、色々突っ込みどころはあると思いますが、どうぞよろしくお願いしますm(_ _)m

  • MYSQLでCSVインポートが一行目しかされません

    phpMyAdminで空のテーブルにCSVファイルをインポートをしているのですが、なぜか一行目だけしかインポートされずに困っています。 フィールド数は合っているのですが、なにか思い当たる原因があれば教えていただけますでしょうか。 こちらはチェックしていて、テキストエディタで開いてカンマの位置や数も合っているはずなのですが。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1132222936 ちなみにデータは、 フィールド名 a(varchar(20)),b(float(6,4)) に対して 値 1,1.34 2,1.21 3,1.25 のような単純なデータです。 すでにテーブルとフィールドは作ってあり、CSVデータは 1,1.34 2,1.21 3,1.25 というデータのみです。 何度やっても、「1,1.34」の一行目だけしかインポートされません。

    • ベストアンサー
    • MySQL
このQ&Aのポイント
  • SC-T5050の印刷中に用紙の一部にインクが垂れる現象が発生しており、印刷された文字や画像がにじんでしまいます。1週間ほど前に印刷した際にはこのようなトラブルは発生していませんでした。
  • 原因が分からず、このインク垂れの問題に対処する方法を探しています。できるだけ早く解決したいので、アドバイスやおすすめの対処法があれば教えていただきたいです。
  • このトラブルによって印刷物の品質が低下してしまうため、迅速かつ確実な解決策を求めています。EPSON社製品についての知識や経験のある方のアドバイスをお待ちしています。
回答を見る