MySQLでSQLクエリを含むテキストファイルを実行したい。
実行しようとするsource /Desktop/test.sql
とエラーが発生しました:
mysql>。\ home \ sivakumar \ Desktop \ test.sqlエラー:ファイル '\ home \ sivakumar \ Desktop \ test.sql'を開けませんでした、エラー:2
私が間違っていることについて何か考えはありますか?
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
-p
オプションで指定できますが、これはお勧めできません。同じホスト上の他のユーザーは、この場合、パスワードps
を読み取るようなシステムツールを使用できます。
-p
ない@EugenRieck は、次の行にパスワードを入力するように要求します
次のコマンドを使用して、テキストファイルに記述されたmysqlステートメントを実行できます。
mysql -u yourusername -p yourpassword yourdatabase < text_file
yourdatabaseがまだ作成されていない場合は、最初に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"
そのための私のお気に入りのオプションは次のとおりです。
mysql --user="username" --database="databasename" --password="yourpassword" < "filepath"
このように使用しているのは、 ""を使用して文字列を設定すると、間違ったパスやスペースの間違いを回避できるためです。
@elcucoコメントを使用する前に、[スペース]を指定してこのコマンドを使用することをお勧めします。これにより、履歴への保存を無視するようにbashに指示します。これは、ほとんどのbashでそのまま使用できます。
コマンドがまだ履歴に保存されている場合は、次の解決策をご覧ください。
追加のセキュリティ編集
さらに安全にしたい場合に備えて、次のコマンドを使用して、コマンドライン入力にパスワードを入力できます。
mysql --user="username" --database="databasename" -p < "filepath"
上位の回答はすべて良好です。しかし、念のために誰かがリモートサーバー上のテキストファイルからクエリを実行したいと(代わりに、コンソール上に表示の)結果をファイルに保存し、あなたがこれを行うことができます:
mysql -u yourusername -p yourpassword yourdatabase < query_file > results_file
これが誰かを助けることを願っています。
-p
パスワードの間にはスペースを入れないでください
SELECT ... INTO OUTFILE /path/to/file.csv
はより効率的な方法だと思います。オプションと構文はこちら-dev.mysql.com/doc/refman/5.7/en/select-into.html
私もこの答えを探してここに来ました、そして私が見つけたものは私にとって最も効果的です:Note私はUbuntu 16.xxを使用しています
mysql -u <your_user> - p
source file_name.sql
お役に立てれば。
mysql -u<user> -p -e 'source filename.sql'
mysql> source C:\Users\admin\Desktop\fn_Split.sql
単一引用符は指定しないでください。
上記のコマンドが機能しない場合は、ファイルをc:ドライブにコピーして、再試行してください。以下に示すように、
mysql> source C:\fn_Split.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
それを行うには非常に多くの方法があります。
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内から実行する必要があります。
これが役立つだけでなく、冗長であるといいのですが。
将来の参考のために、これは前述の方法と比較して、Windowsのmsqlコンソールで機能することがわかりました。
mysql >>source c://path_to_file//path_to_file//file_name.sql;
ルートドライブが「c」と呼ばれていない場合は、ドライブの名前と交換してください。最初にバックスラッシュを試してください。機能しない場合は、スラッシュを試してください。それらも機能しない場合は、完全なファイルパス、ファイル名に.sql拡張子があることを確認し、バージョンがセミコロンを要求している場合は、そこにあることを確認して、再試行してください。
私はこのエラーを抱えており、私が役に立たない可能性があるすべてのアドバイスを試しました。
最後に、問題は、フォルダー名にスペースがあり、フォルダーパスにスラッシュとして表示されることでした。フォルダーを見つけて削除すると、問題なく動作しました。