- ベストアンサー
ダンプデータのファイル名にアンダースコアがあると取
ダンプデータのファイル名にアンダースコアがあると取りこめないのですが、 そういう決まりなのでしょうか? ファイル名を変更すると(アンドースコアを外すと)、普通に取り込めます。 環境は、Windows7です
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
判らないことがあったら書籍(どれがよいのかは私も判りませんが)か下記の MySQLリファレンスを参照するのが良いかと思います。 http://dev.mysql.com/doc/refman/5.1/ja/index.html 文字列に関しての場合 http://dev.mysql.com/doc/refman/5.1/ja/string-syntax.html シングル/ダブルクオートの使い方はエスケープ文字とともに簡単ですが忘れやすい項目ですね。 ・文字列はクオートを使う ・エスケープ文字が含まれる場合はエスケープするかクオートを使う ・クオート文字が含まれる場合はクオート(シングル/ダブル)を使う と覚えておけば良いかと思います。 UNIX系でもWindowsでも同じですね。 今回の場合ですと、「MySQL 文字列」「MySQL ファイル名」「MySQL INFILE」「MySQL OUTFILE」などで検索すると多くの情報・実例がみつかりますので、検索語が適切であれば(これが難しいのですが)意外と簡単に必要な情報がみつかります。 MySQLはインストールしてないので、私も検索して勉強させていただきました。
その他の回答 (4)
- samtomsan
- ベストアンサー率55% (1060/1897)
MySQLはインストールしてないので試すことができないのですが、 > ▼ダンプデータ取得 この書式でデータベース名Aには取り込めているのでしょうか。 下記ではどうなりますか。 D:/user/xampp/mysql/bin>mysqldump -u root -p データベース名A > 'hoge_piyo_mysql.dump'; > ▼ダンプデータを違うDBへ取り込む この場合は D:/user/xampp/mysql/bin>mysql -u root -p データベース名B < 'hoge_piyo_mysql.dump'; ではどうなりますか。 クオート、エスケープの使い方が混乱しているように見えるのですが。 (私の方が混乱しているのかな、試しの実行ができなくて申し訳ありません)
補足
アドバイスありがとうございます。 早速試したところ、無事いけました! mysqldump -u root -p データベース名A > 'hoge_piyo_mysql.dump';で、 「'hoge_piyo_mysql.dump'」が作成され、 mysql -u root -p データベース名B < 'hoge_piyo_mysql.dump';で、 無事取り込むことができました。 ちなみに、クオートは、どういうときに使うのでしょうか? 自分的には、 mysqldump -u root -p データベース名A > hoge_piyo_mysql.dump;でも、 「hoge_piyo_mysql.dump」が作成されたので、無事ダンプデータをエクスポートできたとばかり思っていたのですが…… とりあえず、このケースでは、そういうもの、と覚えておく感じなのでしょうか? ネットを見ても、あまり、この辺りクオートが書かれているようにも見えないのですが、 それは、クオートを書くことが当然前提なので、単に省略されているだけなのでしょうか? 後、この現象は、Linuxだからじゃなくて、Windowsだからってことと、 何か関係あるのでしょうか?
- samtomsan
- ベストアンサー率55% (1060/1897)
>指定されたパスが見つかりません。 エスケープがパスの区切りとみなされているということですね。 具体的にコマンドを書いていただいた方が回答が得られ易いのではないかと思います。 下記のようにクオートで囲ったらどうなりますか。 'c:\\mysql\\data\\name_in_ko.tab'
補足
アドバイスありがとうございます。 状況的にはこんな感じです。 ▼ダンプデータ取得 D:/user/xampp/mysql/bin>mysqldump -u root -p データベース名A > hoge_piyo_mysql.dump; ▼ダンプデータを違うDBへ取り込む D:/user/xampp/mysql/bin>mysql -u root -p データベース名B < 'hoge\_piyo\_mysql.dump'; クオートで囲んでみたのですが、やっぱり「指定されたパスが見つかりません。」と表示されます。 その後、色々試した結果、 D:/user/xampp/mysql/bin>mysql -u root -p --default-character-set=utf8 データベース名B < hoge_piyo_mysql.dump; とやると(--default-character-set=utf8をつけると)うまくいくことが分かりました。 無事取り込みは出来たのですが、なんでこうなるのでしょうか。 ▼分からないこと ・「指定されたパスが見つかりません。」と表示される理由(ダンプデータは、mysql/bin/直下に置いてます) ・--default-character-set=utf8をつけるとうまくいく理由(取得したダンプデータの文字コードを確認したら、ちゃんとUnicode(UTF-8)になってました) 何か、多分こうなんじゃないの? 的なアドバイスがあれば、教えてください。
- samtomsan
- ベストアンサー率55% (1060/1897)
済みません。 MyQSLですね(カテゴリーを見ていませんでした) MySQLではアンダースコアは任意の1文字を表しますからエスケープしないとだめじゃないかな。 例えば test_test -> test\_test
補足
回答ありがとうございます。 エスケープすると、 >指定されたパスが見つかりません。 となり、エラーとなります。 ダンプデータファイル名のアンダースコア自体を外すと、取り込めるので、パスが違ってるってことはないと思うんですが…
- samtomsan
- ベストアンサー率55% (1060/1897)
> ダンプデータのファイル名にアンダースコアがあると取りこめないのですが 取り込むとは何かのソフトで読み込むということでしょうか。 そうで在ればそのソフトの仕様の可能性がありますね。 一般的にはアンダースコアーは認められていると思いますので、そのソフトが記号としてはねる(認めていない)文字かもしれません。
補足
回答ありがとうございます。 >何かのソフトで読み込むということでしょうか いや、コマンドプロンプトでの話です。 >一般的にはアンダースコアーは認められていると思います そうですか。そうですよね……
お礼
回答ありがとうございました。 色々勉強になりましたー