- ベストアンサー
MySQLの大量データインポートを速くする方法
- MySQLの大量データインポートを効率的に行う方法として、テーブル定義の変更やチューニングがあります。
- 大量データをインポートする際の注意点として、データベースのエンジンをMyISAMに変更することや、unique制約を外すことが挙げられます。
- 大量データのインポートに関するベンチマークやチューニング情報は、ウェブ上で検索して詳細なデータを参考にすることが可能です。
- みんなの回答 (5)
- 専門家の回答
関連するQ&A
- MySQLのInnoDBテーブルについて
MySQLのバージョンは4.1.13-ntです。 元々MyISAMテーブルを使用してたんですが、トランザクション機能を使いたいということでInnoDBテーブルに変えたところ、検索に凄く時間がかかるようになりました。データ件数は二百万件ぐらいです。MyISAMテーブル の時は数秒でかえってきたのが、InnoDBテーブルでは何分という結果になりました。 InnoDBは早いと聞いたのですが、データが大量になると遅くなるのでしょうか?ご教授お願い致します。
- 締切済み
- MySQL
- MySQLのストレージエンジンの種類について
Windows環境でMySQL5.1.36のデータベースを使っています。 phpMyAdminで見るとストレージエンジンの種類が6つあります。 1) MEMORY 2) MyISAM 3) BLACKHOLE 4) MRG_MyISAM 5) CSV 6) ARCHIVE 私はInnoDBを良く使うのですがphpMyAdminではどのように設定するのでしょうか? InnoDBもMySQLのパラメータでバッファを増やすと、MEMORYエンジンと同じように 高速でINSERTのSQLが実行できます。 それを考えると、InnoDBだけ1個エンジンあれば良いと思ってしまうのですが、 なぜphpmyAdminでは6つのストレージエンジンがあるのでしょうか? それぞれの存在意義が知りたいです。
- ベストアンサー
- MySQL
- インポートできない。
あるテーブルのデータをダンプしてエクスポート(export_utf8.sql)しました。 それを他のMysqlへインポートしようと以下のコマンドを実行したところ、 mysql -p --default-character-set=utf8 db < export_utf8.sql 以下のエラーが出力されました。 Unknown MySQL server host 'border="1"' (1) おそらく、エスケープ関連でコケているものかと思いますが、 どうすればインポートできるのかわかりません。 ご存知の方、宜しくお願いします。
- ベストアンサー
- MySQL
- MysqLのインポートについて
皆さんのお力を貸して頂きたく質問させて頂きます。 現在Mysqlを初導入しようとしております。 そこで【heteml】をレンタルしFTPソフトでアップロード致しまして データベースを管理画面より作成しました。 そして以前他のサーバーで使用していたテーブルデータから エクスポートしてきたファイル【拡張子は.sqlのファイル】を インポートしようと試みたのですが下記のようなエラーが 表示されてしまいます。 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓 実行した SQL: -- phpMyAdmin SQL Dump -- version 2.8.2.4 -- http://www.phpmyadmin.net -- -- Host: localhost:3306 -- Generation Time: Aug 22, 2007 at 06:25 PM -- Server version: 4.1.20 -- PHP Version: 5.0.5 -- -- Database: `XXXXXXXlDB` -- -- -------------------------------------------------------- -- -- Table structure for table `lm_cdata` -- CREATE TABLE `lm_cdata` ( `cdata_id` int( 12 ) NOT NULL AUTO_INCREMENT , `user_id` int( 12 ) NOT NULL default '0', `cfield_id` int( 12 ) NOT NULL default '0', `value` longtext NOT NULL , PRIMARY KEY ( `cdata_id` ) ) ENGINE = MYISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT =348; MySQLのメッセージ: #1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DEFAULT CHARSET=latin1 AUTO_INCREMENT=348' at line 7 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓 このエラーを色々と調べてみたらMysqlのバージョンがhetemlの場合 Mysqlのバージョンが4.0の為エラーが出ていると自己認識しました そこで皆様が知っているMysql4.1が入っていてお試し期間の あるレンタルサーバーはご存知でないでしょうか? またこのエラーがMysqlのバージョンのものでないとした場合 どのような原因が挙げられるでしょうか? お力をお貸し下さい。宜しくお願い致します。
- 締切済み
- MySQL
- 5.0環境のインポート
MySQLのバージョンアップで、4.0⇒5.0を行っています。 MySQL4.0の環境のダンプファイルを、 MySQL5.0にインポートしたいのですが、 MySQL4.0がインストールしているパソコンから、 cd mysql\bin より MySQL5.0環境にインポートが可能でしょうか? MySQL4.0は自分のパソコンにインストールされていて、 MySQL5.0はO別サーバになっています。 mysql -h (サーバIPアドレス) -u (ユーザ) -p (データソース名) --default-character-set=sjis< C:/Dump.sql のようなことを考えています。
- 締切済み
- MySQL
- Mysql4.0からMysql5.0へデータ移動法
MySQL4.0のデータベースのバックップデータがローカルPCにあります。 ただしphpmyadminでエクスポートしたのではないので、直接のデータ(FRM/MYD/MYIファイル)しかありません。 ※MySLQ4.0のサーバーも廃止しています。 この状況で、phpmyadmin2.11.11のインポートを使いMySQL5.0のデータベースへローカルPCにあるデータを上げたいのですが、良い方法はあるのでしょうか? また注意すべき点などありますか? ファイルの文字セット:utf8 部分インポート:設定しない(レコード数0) ファイル形式:SQL エンコーディング:non (EUC/SJIS選択しない) 全角カナ変換:設定しない 上記設定でインポートしよう思っています。 インポート時の上記、各項目の選択を間違えるとデータ壊れてしまうのでしょうか? 正しくインポートできないと、HPコンテンツの他のファイルが壊れることもありますか? 独自で色々調べてみましたが検索HITしたページはすべて内容がバラバラでどれが正しい方法か分からず、「ダンプとかってなに?」というくらい素人ですので噛み砕いた説明していただけると有難いです。
- ベストアンサー
- MySQL
- MySQLでデータをマージする方法について
お世話になります。 スキーマが二つあります。db1とdb2です。 それぞれ、同じ構造のテーブルを持っていて、格納しているデータだけが違います。 db1にdb2をマージしようとしているのですが、上手くいきません。 手順としては、以下のとおりです。 (1)まず、db1のダンプを取りました。 (インポート先でテーブルをドロップしないようにオプションを付加) c:\>mysqldump -u root --add-drop-table=false -p db1>db1.sql (2)次に、db2に接続してダンプしたファイルをインポートしました。 mysql>\. db1.sql インポートの前後で、テーブルの件数を見たのですが、 変わらないのでマージできていないようです。 以下は当方の使用環境です。 Windows7 Pro 64Bit MySQLServer 5.1(mysql-5[1].1.28-rc-win32) 他に必要な情報があればお聞かせください。 よろしくお願いします。
- ベストアンサー
- MySQL
- MySQLの実データはどのフォールダーにありますか?
現在MySQLのDUMPはphpMyadminを利用して、xport&importを実行しております。 質問は実際に存在するMySQLデータは MySQL/DB名/ テーブル名.frm テーブル名.MYD テーブル名.MYI でしょうか。これをDUMPしているということでしょうか。 また、EXPORTをせずに上記の3種類のファイルをコピーしても同様な結果が得られるのでしょうか。 ご教授をお願いいたします。
- ベストアンサー
- MySQL
- PHPでMySQLのデータのインポート&SELECT結果のダウンロード
こんにちは。いつもここにはお世話になっています。 ご質問が何点かあって申し訳ないのですが、簡単に作ろうとしているスクリプトを説明すると一日一回夜中にCSVかTEXT形式でデータがアップされます。それをMysqlの指定したテーブルにインポートします。その際前日のデータは全て削除します。作られたCSVファイルも削除したいんです。翌日にそのインポートされたデータを検索し必要に応じて検索されたデータをダウンロードできるようにしたいんです。ダウンロードするファイルはCSVでファイル名はテーブル名に検索した時の時間をつけた名前。これを全てPHPで行いたいんです・・・。 現在検索とSSHでログインしてのMysqlにインポートはできました。ダウンロードはまだ挑戦していないのですが、まずファイルを作ることとPHPでのデータのインポートができるのかわかりません。 質問なのですが、 1.分かりにくいのですが、上記のようなことはPHPで可能でしょうか? 2.データのインポートはPHPではどのようにしたらいいのでしょうか? 3.テーブル内のデータの削除はDELETEを使えば可能なのはわかりましたが、指定したフォルダ内のファイルを削除する方法はありますか? 4.SELECTで検索したデータが画面に表示されダウンロードできるようにファイルを作るのに $sql = "SELECT * FROM テーブル名 WHERE フィールド = \"条件\" "; $sql .= "INTO OUTFILE \"/home/パス/テキスト.CSV(or txt)\""; $res = mysql_query($sql); とスクリプトを記述しましたが出来ませんでした。 SShでmysqlにログインをして mysql> SELECT * FROM テーブル名 WHERE フィールド = '条件' -> INTO OUTFILE '/home/パス/テキスト名.txt'; とするとできたのですが、単純にこれをSELECT等と同じようにしたらダメなのでしょうか? 質問が多く申し訳ないのですが、ご教授をよろしくお願いします。
- ベストアンサー
- PHP
- データの移行について
いつもお世話になっております。 MySQLのデータに移行について質問させていただきます。 サーバの移転に伴い、データベースも移行することになりました。 MySQLの文字コードが変わっているため、新しいサーバで文字化けを 起こしてしまいます。 1)データのダンプ $ mysqldump --user=root --password --default-character-set=latin1 DB名 > dump.sql 2)新しいサーバで文字コード変換 $ perl -pi -e 's/utf-8/latin1/' dump.sql 3)インポート $ mysql --user=root --password DB名 < dump.sql 上記の方法で問題がありますでしょうか。 ご教示よろしくお願いいたします。 <旧サーバ> MySQL:3.23.58 文字コード:euc-jp <新サーバ> MySQL:5.0.45 文字コード:utf-8
- 締切済み
- MySQL
お礼
nora1962様 返信遅くなり大変失礼致しました。 とても丁寧なご返答ありがとうございます。 いろいろと打てる手はありそうですね。 データ加工用のソースコードまで書いて頂いて、とても参考になります。 LOAD DATAを使う場合はCSVへの変換の時間も加味して考えます。 マルチプルインサートのINSERT行数を増やす方法かLOAD DATAを使う方法で やってみたいと思います。 どうもありがとうございました。