こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

mysqldumpについて

mysqldumpに関して、2つ目。。。というより、2回目(?)の質問になります。

知恵をお貸しいただける方、どうかよろしくお願いしますm(_ _)m

前質問
http://okwave.jp/qa/q7308667.html

「マイグレーションツール使えばいんじゃね?」
とのアドバイスを参考にとりあえず試してはいるものの、

それはそれ。これはこれ。

として、どうしても前質問のような現象になることの原因が気になります。


■テーブル構造

フィールド名|種別|照合順序|その他
id|int(10)|なし|auto_increment
data|text|utf8_general_ci|なし

の2フィールドのみです。


■データ登録

phpMyAdmin上の操作で、データ挿入を行い、「id」は、auto_incrementのため放置。
「data」に以下データを登録します。

あああああ
いいいいいいい
ううううう

登録後、再度、別のデータを登録します。

かかかかか
ききききききき
くくくくく


■mysqldump実行

mysqldump
-u ユーザ名 -pパスワード
--default-character-set=binary
--tab=D:/tmp
--fields-terminated-by=,
--fields-optionally-enclosed-by=\"
--lines-terminated-by="\r\n"
DB名 テーブル名


■実行結果

1,"あああああ\
いいいいいいい\
ううううう"
2,"かかかかか\
ききききききき\
くくくくく"


■疑問箇所

ん?コレなんだ??

1,"あああああ\←「コレ」


--fields-terminated-by=,
は、カラム区切りだから、「1,"あ」で問題なく出来ている。

--fields-optionally-enclosed-by=\"
は、文字列系のデータの囲み文字指定。。。「"あああ~ううう"」で問題なさそう。

--lines-terminated-by="\r\n"
は、レコードの区切り文字指定。。。「ううう"改行2,"かかか」で、テキストエディタで確認した際も、CRLFになってたみたいだから問題なし。

なんとなーく
--lines-terminated-by="\r\n"

--lines-terminated-by=""
にして実行してみると

1,"あああああ
いいいいいいい
ううううう",2,"かかかかか
ききききききき
くくくくく",

「\」は無くなったが、レコード区切りが無くなるので、全てを1レコードと認識する。。。


そもそも、「--lines-terminated-by」は、レコード区切りのはずなのに、何故改行コードに影響してくるんだろう??

「文字列データ内の改行コードの指定」なんて無いよな???
と思いながら、何をどうすればいいのか困っています。


1,"あああああ\←「コレ」

の意味をご存知の方いらっしゃいませんか?
参考情報でも、予想でも何でも構わないです。一人だと既に詰まってる状況なので、お知恵をお貸しいただけませんか?よろしくおねがいしますm(_ _)m

投稿日時 - 2012-02-23 10:45:32

QNo.7322015

困ってます

質問者が選んだベストアンサー

実行環境はwindowsですか?
お使いのMySQLのバージョンは何でしょう?

後、実行結果はどのように確認したのでしょうか?

私のほうでvarchar項目に改行(\n)をセットしてINSERTした場合では、項目中の「\n(LF)」はそのままで、改行は\r\n(CRLF)で出力されています。

投稿日時 - 2012-02-24 14:29:34

補足

結局、ダンプをかけずに、移行先~の方のDBから、selectをかけてinsertしていくようなバッチを組む形になったので、謎は謎のまま。。。

にはなってしまいました。。。

勉強になりました。ありがとうございました。

投稿日時 - 2012-08-09 11:21:03

お礼

回答非常に感謝です。

>>実行環境はwindowsですか?
>>お使いのMySQLのバージョンは何でしょう?

失礼しました。簡略化しすぎたようです。

実行環境はWindowsです。

Windows2003Server上に、MySQL5.1が入っています。
上記環境のサーバの「phpMyAdmin」にクライアント側(WindowsIE8)からアクセスし、

■テーブル構造

フィールド名|種別|照合順序|その他
id|int(10)|なし|auto_increment
data|text|utf8_general_ci|なし

となるテーブルを作成します。
「phpMyAdmin」画面上のメニュー、「挿入」より、「data」フィールドの値に

あああああ
いいいいいいい
ううううう

とデータを入力し、データ登録実行を行ないます。


この状態で、サーバの画面上で、コマンドプロンプトから、mysqldumpコマンドを実行します。

データの出力先フォルダに、「テーブル名.txt」の結果ファイルが作成されたので、テキストエディタ(サクラエディタを使用)
にてファイルを開き、(開く際のコードはutf-8です)

■実行結果

1,"あああああ\
いいいいいいい\
ううううう"

となっていることを確認しました。



・「my.ini」の定義が問題?(しかしながら、自分は触れない&担当者はそこまで詳しくない&別システムも乗ってるため気軽に触れない
・textフィールドなのが問題?
・そもそも「--lines-terminated-by="\r\n"」項目は、「フィールドの区切り」指定のはずなのに、何故「改行」で影響が出る?

疑問は増えるばかりですが。。。

できる限り詳しく書いてみたつもりではありますが、上記内容から、
ココ確認してみたら?という点や、ココもっと詳しく。などという点などがありましたら、お時間を割いてアドバイスいただけると非常に助かります。
申し訳ありませんがよろしくおねがいします。

投稿日時 - 2012-02-24 16:15:19

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問