プロが教えるわが家の防犯対策術!

ダンプデータのファイル名にアンダースコアがあると取りこめないのですが、
そういう決まりなのでしょうか?
ファイル名を変更すると(アンドースコアを外すと)、普通に取り込めます。

環境は、Windows7です

A 回答 (5件)

判らないことがあったら書籍(どれがよいのかは私も判りませんが)か下記の MySQLリファレンスを参照するのが良いかと思います。


http://dev.mysql.com/doc/refman/5.1/ja/index.html

文字列に関しての場合
http://dev.mysql.com/doc/refman/5.1/ja/string-sy …

シングル/ダブルクオートの使い方はエスケープ文字とともに簡単ですが忘れやすい項目ですね。
・文字列はクオートを使う
・エスケープ文字が含まれる場合はエスケープするかクオートを使う
・クオート文字が含まれる場合はクオート(シングル/ダブル)を使う
と覚えておけば良いかと思います。

UNIX系でもWindowsでも同じですね。

今回の場合ですと、「MySQL 文字列」「MySQL ファイル名」「MySQL INFILE」「MySQL OUTFILE」などで検索すると多くの情報・実例がみつかりますので、検索語が適切であれば(これが難しいのですが)意外と簡単に必要な情報がみつかります。

MySQLはインストールしてないので、私も検索して勉強させていただきました。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
色々勉強になりましたー

お礼日時:2011/08/05 02:46

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だからってことと、
何か関係あるのでしょうか?

補足日時:2011/08/04 05:03
    • good
    • 0

>指定されたパスが見つかりません。



エスケープがパスの区切りとみなされているということですね。
具体的にコマンドを書いていただいた方が回答が得られ易いのではないかと思います。

下記のようにクオートで囲ったらどうなりますか。
'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)になってました)


何か、多分こうなんじゃないの?
的なアドバイスがあれば、教えてください。

補足日時:2011/08/03 21:33
    • good
    • 0

済みません。



MyQSLですね(カテゴリーを見ていませんでした)

MySQLではアンダースコアは任意の1文字を表しますからエスケープしないとだめじゃないかな。
例えば
test_test -> test\_test

この回答への補足

回答ありがとうございます。

エスケープすると、
>指定されたパスが見つかりません。
となり、エラーとなります。

ダンプデータファイル名のアンダースコア自体を外すと、取り込めるので、パスが違ってるってことはないと思うんですが…

補足日時:2011/08/03 10:08
    • good
    • 0

> ダンプデータのファイル名にアンダースコアがあると取りこめないのですが



取り込むとは何かのソフトで読み込むということでしょうか。

そうで在ればそのソフトの仕様の可能性がありますね。

一般的にはアンダースコアーは認められていると思いますので、そのソフトが記号としてはねる(認めていない)文字かもしれません。

この回答への補足

回答ありがとうございます。

>何かのソフトで読み込むということでしょうか
いや、コマンドプロンプトでの話です。

>一般的にはアンダースコアーは認められていると思います
そうですか。そうですよね……

補足日時:2011/08/01 15:21
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!