質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

1回答

340閲覧

mysqlのダンプ方法について

Nitta

総合スコア96

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

0クリップ

投稿2018/04/10 01:08

お世話になってます。
実は今mysqlのダンプをしたいのですが、
出力できません。OSはWin7です。
ちなみに、windowsではcmdで実施するのが正しいのですか?
それともmysql command line clientでしょうか?
ご存じの方居られたら返信願います。
ちなみに下記のコードで試しました。

mysqldump -u{ユーザー名} -p --tab=/tmp --fields-terminated-by=, {DB名} {テーブル名} > 'C:\ProgramData\MySQL\MySQL Server 5.7\dump.csv'(サーバー側のフォルダパス)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/04/10 01:11

実行した結果、エラー等起きているのでしょうか?また、パスは正しいのでしょうか?空白などがない場所に変更するとどうなりますか?
Nitta

2018/04/10 01:33

構文エラーになります。パスはmy.iniと同じなので問題ないと思います。
m.ts10806

2018/04/10 01:49 編集

パスに空白や全角などがあった場合もしかしたら正常に動作しないかもしれませんので念のため空白がない場所でも試してみてください。
Nitta

2018/04/10 01:50

ERROR 1064(42000):You have an error in your SQL syntax;check the manual that corresponds to your MySQL server version for the right syntax to use near 'mysqldump -uroot ...以下、構文'です。お願いします。
yoorwm

2018/04/10 02:01

コマンドラインではなくてmysql上で実行したのですか?
Nitta

2018/04/10 02:13

mysqlでもしました。また、cmd上では『mysqldumpは内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識してない』となってます。
yoorwm

2018/04/10 03:22

mysqldumpがインストールされていないですね
m.ts10806

2018/04/10 04:46

yoorwmさん cmdで実行する場合も結局mysqlにログインして行うことになるのでインストールされているかどうかではないと思います。あくまでSQLの文法ミスです。
m.ts10806

2018/04/10 04:46

saikioさん エラーは質問文に追記してください
Nitta

2018/04/10 05:14

記述の件、すいません。以後、慎みます。返信ありがとうさんです。明日朝一でインストールします。
m.ts10806

2018/04/10 05:17

回答しました。ひとまず現在のエラーは解消できると思います。念のためその後のフォローも回答に追記していますが、うまくいかなければまた教えてください。
guest

回答1

0

ベストアンサー

'C:\ProgramData\MySQL\MySQL Server 5.7\dump.csv'

色々確認してみたところ、「出力先パス」はクォーテーションで括る必要はないようです。

ただ、ここを解消してももしかしたら UnKnown command のエラーが出るかもしれませんので、その場合は
--default-character-set= のオプションにデータベースの文字コード(utf8など)をつけると良いです。

windowsではcmdで実施するのが正しいのですか?

cmdから実行する場合はmysqlにログインしてmysqlのコマンドラインツールを起動して利用します。

※古い記事ですが考え方は同じです。
要は直接cmdから実行するわけではないということですね。

投稿2018/04/10 05:12

編集2018/04/10 05:20
m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Nitta

2018/04/10 22:34

有難うございます。上手く行きました。 mysql client 起動し、cmdで動かすという 初歩的な事がわかってないのが情けないですわ。 また、宜しくです。
m.ts10806

2018/04/10 22:37

えっと、cmdでmysql clientを起動するので逆ですね。
Nitta

2018/04/10 22:57

すいません、上手く行ったかに見えたんですがまだだめです。 今、cmdからmysqlを起動後、↑のsql文を入れたんですが、 ERROR 1064が出てしまいます。
m.ts10806

2018/04/10 23:02

1064は文法エラーですね。 SQL全文をご提示ください。 (回答冒頭の「クォーテーション不要」のところは反映されたのでしょうか・・・)
Nitta

2018/04/10 23:14

2つテストしました。 ①mysqldump -uroot -p --tab=/tmp --fields-terminated-by=, test nitta > C:\ProgramData\MySQL\MySQL Server 5.7\dump.csv ②mysqldump -uroot -ppassword -hlocalhost test nitta > C:/Users/u00050239/Desktop/dump.sql の2文です。binフォルダにはmysqldumpslow.plがありますので mysqldumpはインストールされてると考えています。
m.ts10806

2018/04/10 23:55 編集

試せてませんが、 -uroot → -u root -ppassword → -p password -hlocalhost → -h localhost では? -uroot -ppassword -hlocalhostというコマンドはないというのでエラーになっているように思います。
m.ts10806

2018/04/11 00:03

必要なのはmysqldump.exeです。(slowがあるならありそうですが) あとは mysql/bin内でコマンドを試すとか、ですかね。。 これならmysqlにログインしなくてもいいかもしれません(パス通してたらどこでも出来そうですが)
Nitta

2018/04/11 01:20

今、mysql/bin内にmysqldump.exeがあり、そこで mysqldump -uroot -p --tab=/tmp --fields-terminated-by=, test nitta > C:/ProgramData/MySQL/dump.csv を実行したら、Errorcode:2 (/tmp/nitta.sqlは見当たりません)と出るのですが、何とかお願いできないでしょうか?
m.ts10806

2018/04/11 01:29

その前に1つ確認忘れていましたが、それぞれのオプションはきちんと意味や意図があってつけているんですよね?
Nitta

2018/04/11 02:22

はい、そのつもりです。
m.ts10806

2018/04/11 02:41 編集

--tabオプションの指定はフルパスの方がいいかもしれませんね そのままだと実行しているディレクトリからのパスになるのですが\tmpだとルートディレクトリからのパスになるので、Windows上では厳しいかもしれません。 下記のような感じで。 mysqldump -u root --tab=C:\Users\aaaa\Desktop\tmp --fields-terminated-by=, test check ひとまず私はこの指定で出力されました。※tmpディレクトリは予め作っておいてください。 -tabオプションを利用するとSQLとtxtファイルになるようですね。csvを指定していてもそちらには書き込まれません。
m.ts10806

2018/04/11 02:41

https://dev.mysql.com/doc/refman/5.6/ja/mysqldump-delimited-text.html > --tab=dir_name オプションを付けて、mysqldump を呼び出した場合、それは dir_name を出力ディレクトリとして使用し、テーブルごとに 2 つのファイルを使用して、そのディレクトリに個別にテーブルをダンプします。テーブル名はこれらのファイルのベース名です。t1 という名前のテーブルの場合、ファイルには t1.sql および t1.txt という名前が付けられます。.sql ファイルにはテーブルの CREATE TABLE ステートメントが含まれます。.txt ファイルにはテーブル行ごとに 1 行のテーブルデータが含まれます。
Nitta

2018/04/11 03:46

返信有難うございます。 ただ、mysql/bin内から以下のsql文実行しましたが、 接続エラーerror:1045がでました。 先ほどまで普通にパスワードリクエストがあったのですが。 mysqldump -u root --tab=C:\Users\u00050239\Desktop\tmp --fields-terminated-by=, test nitta もちろん、tmpフォルダをdesktopに作成しています。 また、コマンドラインからmysql起動し、sql文実行後は error:1064構文エラーがでます(泣)。
m.ts10806

2018/04/11 03:58 編集

1064は文法エラーなのでどこかにミスがあるとは思うのですが。 2018/04/11 12:46のコメントのコマンドをコピペして出力先(--tab)と対象のテーブル変えただけのコマンドを実行しましたが、正常に実行されました。 ※mysqldump.exeがあるフォルダでcmd起動しそのままmysqldumpコマンド打ってます。
Nitta

2018/04/11 04:38

返信有難うございます。 rootは全権限付与しており、desktopにtmpフォルダも作成。 cmdをmysqldump.exeフォルダに移動し、上記sql文実行していおります。 まあ、ちょっと(泣)
Nitta

2018/04/11 04:56

cmdをmysqldump.exeフォルダに移動後、下記のsql文で解決できました。 mysqldump -u root -p -x test nitta > C:/Users/u00050239/Desktop/tmp/mysql.txt 有難うございました。
m.ts10806

2018/04/11 04:57

どこか違ったのかもしれませんね。 ひとまずうまくいったようで何よりです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問