mysqldumpの使い方がイマイチ分かりません。

このQ&Aのポイント
  • MySQLからMSSQLServerへデータを移す方法が分からないです。
  • mysqldumpの実行後のファイルに不明なデータが入ってしまいます。
  • 改行コードに関連した問題かもしれませんが、解決に至っていません。
回答を見る
  • ベストアンサー

mysqldumpの使い方がイマイチ分かりません。

こんにちは。よろしくおねがいします。 MySQLからMSSQLServerへデータを移すなどという事をやっているのですが、途中、詰まっています。 助言いただける方がいましたら、どうかよろしくおねがいしますm(_ _)m 【環境】 移行元: Windows2003Server MySQL5.1 移行先: Windows2003Server MSSQLServer2000 【やること】 MySQLにあるデータをMSSQLServerに移行する。 【方法】 1.移行元で、コマンドプロンプト起動。以下のコマンドを打ち込み、ファイルにする。 mysqldump -u ユーザ名 -pパスワード --default-character-set=binary --tab=D:/tmp --fields-terminated-by=, --fields-optionally-enclosed-by=\" --lines-terminated-by="\r\n" DB名 2.ファイルをテキストエディタで開き、「UTF8→SJIS」に変換し、保存しなおす。 3.ファイルを、移行先で、「bcpユーティリティ」を使用して、テーブルに放り込む。 【困っているところ】 mysqldumpを実行した後のファイルに、どうしたらいいのか不明なデータが入る。 テーブル構成は フィールド1:int(auto_increment) フィールド2:text(utf8_general_ci) のみです。 phpMyAdmin上で、データの挿入から、フィールド2に対して、「改行を含むデータ」を登録した場合、不明データが入ります。 ■登録データ あああああ いいいいいいい ううううう えええええええ おおおおおおお ■mysqldumpで作成されるデータ "あああああ\ いいいいいいい\ ううううう\ えええええええ\ おおおおおおお" 多分、今まで気にしていなかった(Win-MSSQL環境がほとんどなので...)改行コードが~といったところでは無いかとは思っていますが、 いろいろ試していますが解決に至っていません。 解説できる方がいらっしゃいましたら、どうかお力をお貸しいただけると助かりますm(_ _)m 試したこと。 --result-file=file あたりを使ってみた。 。。。意味なし? http://dev.mysql.com/doc/refman/5.1/ja/load-data.html 一応、読んで、オプションへの指定を変えて出力して取り込んでみるものの、特に変わらず。。。

  • MySQL
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
回答No.1

こんばんは。 移行するなら、マイグレーションツールが無償で提供されています。 以前使った事がありますが、スムーズに移行できました・・・。 MySQLのサイトのどっかにあります。

STICKY2006
質問者

お礼

こんばんは。さっそくの回答ありがとうございます。 >>移行するなら 「移行」と書いてしまいましたが、「定時実行」させる必要があるので、データ連携。。。とでも言うんでしょうかね?(汗 MySQL側~を使用した状態でしばらく動かしておき、MSSQLServer側では、データ参照のみさせるような別システムを立ち上げて、その後、なんやらかんやらする。 という話になっているので、 mysqldumpコマンドを、コマンドプロンプト上で定期実行するような、バッチファイルにしてタスクで蹴るか、SQLServerストアドから蹴るか。。。 などという事を考えていました。 (差分。とかも考えましたが、まぁ、そこも何とかなるし、まずは「全データを全とっかえする処理を定時で」と考えています。 >>マイグレーションツールが 楽にできる上に、定時実行なんか出来たりしたら最高なんですけどね(汗 ちょっとそれも出来ないか含め、探してみたいと思います。 ありがとうございました。

関連するQ&A

  • 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

    • ベストアンサー
    • MySQL
  • MySQLでCSV出力したい

    MySQL初心者です。 テーブルから抽出したデータを CSVにてエクスポートしたいです。 SELECT * FROM tbl_employee INTO OUTFILE "/ttt.csv" FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY "\r\n"; これだとフィールド名がエクスポートされないという現象が起こります。 また、エクスポート先なのですが、 デスクトップとかにしたいのですが、 設定の仕方がよくわかりません。 ネットで調べたのですが、限界でした。 まだまだ初心者なもので よろしくお願いいたします

  • mysqldumpについて

    いつもお世話になっております。 MySQL4.0.21、phpMyAdmin2.6.0を使用しております。 mysqldumpコマンドをSSHでコマンド打つと、特定のテーブル以降のテーブルがダンプされません。 phpMyAdminでダンプするとキチンとダンプされるのです。 なぜなんでしょう?テーブル内のレコードに一部文字化けしているデータが含まれているのですが、エラーでちゃんと出力されていないのでしょうか? コマンドライン上にエラーは表示されません。 原因がわからずお手上げ状態です【><。】

    • ベストアンサー
    • MySQL
  • MySQLのLOAD DATAに関して

    MySQLのLOAD DATAで、固定長行フォーマットのファイルのロードを行っています。 その際、以下のような現象の原因がわからず困っています。 データをロードするテーブル、ロードファイル、実行コマンドは以下になります。 -------------------- テーブル -------------------- フィールド1 char(2) フィールド2 char(2) -------------------- ロードファイル(テキストファイル) -------------------- 1020 3040 -------------------- 実行コマンド -------------------- LOAD DATA INFILE 'ロードファイル' INTO TABLE テーブル FIELDS TERMINATED BY '' ENCLOSED BY '' LINES TERMINATED BY '\r\n'; 結果は以下のように、フィールド2にはデータが登録されていません。 ------------- フィールド1  | フィールド2 ------------- 10      |  30      |  望んでいる結果は以下のような結果です。 ------------- フィールド1 | フィールド2 ------------- 10     |20  30     |40  いろいろ試してみたのですが、 どうもchar(2)の場合は2バイトの倍の4バイト、 char(4)バイトの場合は倍の8バイトというふうにデータが区切られるため、 フィールド1のデータを取得する際に4バイト取得してしまっており、 フィールド2の分のデータが取得できません。 どこに不備があるのかわからないのですが、 何か原因の検討がつく方がいたら、ご回答よろしくお願いします。

    • ベストアンサー
    • MySQL
  • LOAD DATE INFILE で Bit(1)型の列にTrueを入れる際に何故かwarningが出る

    MySQLサーバにLOAD DATA INFILEコマンドを使ってファイルを読み込む時,なぜかBit(1)型の列にTrueを入れる際にWarningが無くなりません. オプションには FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n' を選択して "列1","列2","列3"\r\n の形式で読み込んでいます. この時,Bit(1)型の列にFalseを入れるときには"\0"や"\n",""のような値を入れれば問題なくFalseとなるのですが,逆に他の何を入れてもwarningの発行とともにTrueになり,(Trueが入る事ではなく,warningの発行の方に)困っております. 何方か,warningを出さずにtrueを入力する方法を教えて頂けませんでしょうか. 宜しくお願いします.

  • CSVファイルをMYSQLにインポート

    先日からMYSQL+PHPの勉強をはじめました。 データベース構築の際、以前作成したCSVファイルをMYSQLのテーブルとして 利用したいと考えております。 そこで、MYSQLコマンドより、 LOAD DATA LOCAL INFILE 'ファイル名.csv' INTO TABLE テーブル名 FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n'; Query OK, 0 rows affected (0.04 sec) Records: 102 Deleted: 0 Skipped: 102 Warnings: 0 とCSVファイル自体が悪いのかSQL文に問題がるのかインポートがうまくいきません。。 ちなみにCSVは  0,2011/6/2 0:00,80.94,81.32,80.55,80.92 0,2011/5/25 0:00,81.94,82.17,81.8,81.95 0,2011/5/23 0:00,81.77,82.04,81.32,81.99 環境はphpdevで一括でインストールした phpadmin: バージョン2.3.2 MYSQL: MySQL4 apache: 1.3.27 初心者で基本的な質問かもしれないですがどうかご教授お願いします。

    • ベストアンサー
    • MySQL
  • mysqlのloadコマンドに引数をセットするバッチの作成

    mysqlのloadコマンドに引数をセットするバッチの作成 データ移行でロードするファイルが数多くあり バッチ処理(param.bat)で実行できるようにしたいのですが、 SQLスクリプト(param.sql)にうまく引数を渡すことができません。 引数1にデータ:aaa.txt 引数2にテーブル:test_tbl どうかアドバイスいただけないでしょうか。 宜しくお願いいたします。 OS:Windows XP 【実行時】 c:temp>param.bat aaa.txt test_tbl 【作成したファイルの記述】 param.bat ------- mysql test1 -u user1 -puser1 < param.sql %1 %2 param.sql ------- LOAD DATA INFILE '&1' INTO TABLE &2 FIELDS TERMINATED BY ',' ESCAPED BY '\\' LINES TERMINATED BY '\r\n'; exit;

  • SQLLOADER

    いつも世話になっています。 SQLLOAERでTABLEにデータをロードさせたいのですが SQL*Loader-350: 行64に構文エラーがあります。 ","または")"ではなく"("が見つかりました。 とエラーになりロードすることができません。 CTLファイルは FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS ( AAA, bbb, ccc, ccc(ddd), ) このような記述になっています。 おそらくccc(ddd)の「括弧」が原因だと思うのですが解決方法が分かりません。 どなたかご教授願います。

  • BAT処理でCSVデータのインポート

    よろしくお願いしますm(__)m 昨日から調べて作ってみたのですがうまく動かず、 MYSQLが強制終了してしまうこともありました(T_T) 疲れました・・・ ※test.batに以下の内容を書きました c:\mysql\bin\mysql -u **** -p**** < test.sql ※test.sqlに以下の内容を書きました LOAD DATA INFILE "c:\mysql\test.csv" INTO TABLE 商品管理.商品単品 FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY "" ESCAPED BY "\\" LINES STARTING BY "" TERMINATED BY "\n" ※test.csvはカンマ区切りになっています。 ファイルは【test.bat】【test.sql】【test.csv】とも c:\mysqlに置いています。 この状態でtest.batを実行するとDOS窓が一瞬現れて消えて しまいます。 間違っているところやヒントなどあれば教えてくださいm(__)m

    • ベストアンサー
    • MySQL
  • CSVファイルを毎日、全レコード一括更新したい

    毎日、CSV形式で送られてくる最新のデータがあります。 それを自動的にMySQLに一括で追加・更新したいと考えています。 CSVファイルは毎日、データが追加されたり、UPDATEされたり、削除されたりしています。そのCSVファイルのデータを神様DBとして、上書きしたいと思っています。 つまり、前日のMySQLのデータを本日のデータで完全に上書きしたいと考えています。 単にデータをロードするだけなら mysql> load data infile "ファイルパス/ファイル名.csv" -> into table テーブル名 fields terminated by "," lines terminated by "\n"; でよいと思いますが、完全上書きの方法がよくわかりません。 それとも、上記方法で同じことを2度すると完全に上書きされるのでしょうか?同じレコードが2つ出来上がるのでしょうか?それともマージされるのでしょうか? もし、お分かりでしたらご教授ください。

    • ベストアンサー
    • MySQL