MySQLで、SQLクエリを含むテキストファイルを実行したいです。
私はsource /Desktop/test.sql
を実行しようとしました、そして、エラーを受けました:
mySQL>。\home\sivakumar\Desktop\test.sqlエラー:ファイル '\ home\sivakumar\Desktop\test.sql'を開けませんでした、エラー:2
私が間違っていることについて何か考えはありますか?
MySQLのコマンドラインmysql>
を使用している場合は、SQLファイルをsource
として宣言する必要があります。
mysql> source \home\user\Desktop\test.sql;
たくさんの選択肢があります。
mysql -h hostname -u user database < path/to/test.sql
次のコマンドを使用して、テキストファイルに書き込まれたmysqlステートメントを実行できます。
mysql -u yourusername -p yourpassword yourdatabase < text_file
データベースがまだ作成されていない場合は、まず以下のコマンドを使用してMySQLにログインします。
mysql -u yourusername -p yourpassword yourdatabase
その後:
mysql>CREATE DATABASE a_new_database_name
その後:
mysql -u yourusername -p yourpassword a_new_database_name < text_file
それはそれをすべきです!
ここでより多くの情報: http://dev.mysql.com/doc/refman/5.0/en/mysql-batch-commands.html
すべてのトップの答えはいいです。しかし、万が一誰かがリモートサーバ上のテキストファイルからクエリを実行したい場合は _と_ (コンソールに表示する代わりに)結果をファイルに保存することができます。
mysql -u yourusername -p yourpassword yourdatabase < query_file > results_file
これが誰かに役立つことを願っています。
それをするための私のお気に入りのオプションは次のようになります。
mysql --user="username" --database="databasename" --password="yourpassword" < "filepath"
なぜならあなたが間違ったパスやスペースとのミス、そしておそらく私が遭遇しなかった文字に関するより多くの問題を避けるためです。
@elcucoのコメントでは、以前にこのコマンドを[space]と一緒に使用することをお勧めしていますので、履歴に保存することを無視するようbashに指示します。
それでもコマンドを履歴に保存している場合は、次の解決策を参照してください。
追加のセキュリティ編集
万が一のために、次のコマンドを使用してコマンドライン入力にパスワードを入力してください。
mysql --user="username" --database="databasename" -p < "filepath"
私はここでもこの答えを探しています、そしてここで私が見つけたものが私にとって最もうまくいくことがわかります:注意私はUbuntu 16.x.xを使っています
mysql -u <your_user> - p
source file_name.sql
お役に立てれば。
mysql> source C:\Users\admin\Desktop\fn_Split.sql
一重引用符を指定しないでください。
上記のコマンドが機能しない場合は、ファイルをc:ドライブにコピーしてやり直してください。以下に示すように、
mysql> source C:\fn_Split.sql
.sqlファイルのパスを次のように指定します。
source c:/dump/SQL/file_name.sql;
パスワード引数をコマンドラインから直接渡すことは決してお勧めできません。これは~/.bash_history
ファイルに保存され、他のアプリケーションからアクセスできるようになります。
代わりにこれを使ってください。
mysql -u user --Host host --port 9999 database_name < /scripts/script.sql -p
Enter password:
mysql -uusername -ppassword database-name < file.sql
おそらく、スラッシュ/ブラックスラッシュを変更する必要があります。
\home\sivakumar\Desktop\test.sql
に
/home/sivakumar/Desktop/test.sql
そのため、コマンドは次のようになります。
source /home/sivakumar/Desktop/test.sql
mysqlコマンドで以下のように使用します。プロンプト -
source \\home\\user\\Desktop\\test.sql;
引用符を付けないでください。パス にスペース( '')が含まれていても use まったく引用符なし 。
将来の参照のために、私はこれがあなたのmsqlコンソールのウィンドウズの下で、前述の方法に対して働くことがわかった:
mySQL >> source c://path_to_file//path_to_file//file_name.sql;
あなたのルートドライブが "c"と呼ばれていない場合は、単にあなたのドライブが呼ばれているものと交換してください。最初にバックスラッシュを試し、うまくいかない場合はスラッシュを試します。それらも動作しない場合は、ファイル名にフルファイルパス、拡張子.sqlがあることを確認し、バージョンにセミコロンが付いている場合は、そこにあることを確認してやり直してください。
mysql -u yourusername -p yourpassword yourdatabase < text_file
はリモートサーバー(Amazon EC2)では動作しなかったので...
データベースが最初に作成されていることを確認してください。
その後:
mysql --Host=localhost --user=your_username --password=your_password your_database_name < pathTofilename.sql
それを行うには多くの方法。
From Workbench: File > Run SQL Script -- then follow prompts
From Windows Command Line:
Option 1: mysql -u usr -p
mysql> source file_path.sql
Option 2: mysql -u usr -p '-e source file_path.sql'
Option 3: mysql -u usr -p < file_path.sql
Option 4: put multiple 'source' statements inside of file_path.sql (I do this to drop and recreate schemas/databases which requires multiple files to be run)
mysql -u usr -p < file_path.sql
コマンドラインからエラーが発生した場合は、以前に実行したことを確認してください
cd {!!>>mysqld.exe home directory here<<!!}
mysqld.exe --initialize
これはmysqld.exeディレクトリ内、つまりCDから実行する必要があります。
これが役立つだけでなく、冗長であることを願っています。
私はこのエラーを抱えていて、私が無駄になることができるすべてのアドバイスを試してみました。
最後に、問題は私のフォルダがフォルダパスにスラッシュとして現れるフォルダ名にスペースがあることでした。
リダイレクトの代わりに、次のようにします。
mysql -h <hostname> -u <username> --password=<password> -D <database> -e 'source <path-to-sql-file>'
これはファイルpath-to-sql-fileを実行します