2017-09-05 11 views
0

PowerShellでこのコマンドをどのようにエスケープしますか?"<"をエスケープするには?

mysql -uuser -ppass -hlocalhost -Ddb < .\someSqlFile.sql 

私は<をエスケープする必要があります。 someSqlFile.sql

内容:

SELECT * FROM some_table 
INTO OUTFILE 'C:/tmp/output.csv' 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\n'; 
+0

あなたは何かをDBにインポートして、 '>' DBから何かをエクスポートすることができます。 –

+0

@juergendあなたは理解できないと思います。それは文字通り '<'をpowershellで取ります。これはCMDでは起こりません –

+0

私はそれをテストできませんが、バックティックを試みましたか? – Itchydon

答えて

4

PowerShellは、入力のリダイレクト(<)をサポートしていません。 (PowerShellのから)CMDでコマンドを実行し、次のいずれか

cmd /c mysql -uuser -ppass -hlocalhost -Ddb '<' .\someSqlFile.sql 

またはパイプコマンドにファイルの内容:

Get-Content .\someSqlFile.sql | & mysql -uuser -ppass -hlocalhost -Ddb 
+0

私は質問があります:MySqlファイルでコマンドを持つ代わりに、私はここの文字列としてパイプすることができますか? –

+0

また、 '&'の後に '&'は何をしますか? –

+0

はい、here-stringまたはstringの配列をパイプすることも有効です。 '&'はPowerShellの[呼び出し演算子](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_operators?view=powershell-3.0#special-operators)です。この場合のようにコマンドが裸の単語の場合は必須ではありませんが、コマンドが文字列の場合(例:スペースが含まれているため)、コマンドを使用する必要があります。 '' C:\ path to \ mysql.exe ''は文字列をエコーし​​ますが、 '' C:\ path to \ mysql.exe ''は実行可能ファイルを実行します。 –

0

入力リダイレクションを使用する代わりに、内sourceコマンドを使用することですmysqlクライアント。

mysql -uuser -ppass -hlocalhost -Ddb -e "source ./someSqlFile.sql" 

私はPSユーザーではないため、最後の引数に正しい構文を使用できません。それは1つの引数であるはずですが、スペースを含んでいます。 PSでスペースを含む単一の引数を使用する簡潔なテクニックを探している他のサイトをいくつか検索しましたが、それは簡単ではありません。 :-) CSV形式で別の方法を一つのテーブルをエクスポートするあなたの問題を解決するために

、あなたはmysqldumpをを使用したい場合があります

mysqldump -uuser -ppass -hlocalhost --tab=C:/tmp db some_table 

これは、ファイルsome_table.sqlとDDLとされているファイルsome_table.txtを出力しますその表のデータをそれぞれ示します。

関連する問題