- 締切済み
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に戻すという作業をしたいだけなのですが(ローカルでバックアップも取っておきたい)、何か解決策はありませんでしょうか?
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- fire--
- ベストアンサー率49% (146/293)
もしかすると、sql文の先頭のほうに use データベース名; とかありませんか。 そしてローカルのデータベースと名前が違っているならば ローディングされません。
お礼
早速の回答有難うございました。 sql文を調べてみましたが、 use データベース名; といった文はありませんでした。 sql文は全てが DROP TABLE IF EXISTS テーブル名; CREATE TABLE IF NOT EXISTS テーブル名( カラム名 型 NOT NULL default ディフォルト値, もしくは カラム名 型 default NULL, 以下続く PRIMARY KEY (カラム名) ) TYPE=MyISAM; もしくは ) TYPE=MyISAM AUTO_INCREMENT=数値 INSERT INTO テーブル名(カラム名) VALUES (データ); 以下続く の繰り返しです。 多いもので、各テーブルのINSERT INTO 文は23383件あるものもあります。 sql文を見て気づいたのですが、カラムに不正な値があり、sql文が崩れているような気配があります。 もう少し、細かく調べてみる必要があります。 有難うございました。
補足
調査をしましたが、不正なデータによってsql文が崩れているものもありましたが、 他にも問題がありそうです。 エクスポートするたびにはじかれる場所が変わっているようです。 と言うのは、 正常にsqlが動作するまでレコードを削除します。 次は削除した前半のsqlで実行してみます。 結果はもちろんはじかれるのですが、 削除した前半のsqlから頭の方のレコードを少し削除して実行する成功します。 正常にsqlが動作するところまで削っているのだから、 残りの少なくとも一番最後のレコードは不正なレコードのはずだと思うのですが、 そうではないようです。 逆に削除した前半のsqlから頭の方のレコードで実行してみても成功したりするのです。 もう、完全にお手上げ状態です。