2017-09-05 129 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不支持輸入重定向(<)。或者與CMD(從PowerShell的)執行命令:

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

或管中的文件的內容到命令:

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

我有一個問題:而不是在MySql文件中的命令,我可以將它作爲一個這裏的字符串? –

+0

另外,'''在'|'之後做了什麼? –

+0

是的,管道這裏字符串或字符串數​​組也應該工作。 '&'是PowerShell的[call operator](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_operators?view=powershell-3.0#special-operators)。當你的命令在這種情況下是一個單詞時,這不是必需的,但當你的命令是一個字符串時(例如,因爲它包含空格),你必須使用它。 ''C:\ mysql.exe「路徑只會回顯字符串,而\'\」C:\路徑\ mysql.exe「'會運行可執行文件。 –

0

使用輸入重定向的替代方法是在使用source命令mysql客戶端。

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

我不是PS用戶,所以我不能爲最後一個參數提供正確的語法。它應該是一個參數,但它包含一個空格。我搜索了其他一些網站,尋找一種簡潔的技術,在PS中使用包含空格的單個參數,但這並不容易。 :-)

爲您解決在CSV導出一個表格式的另一個方式的問題,你可能想用mysqldump:

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

此輸出文件some_table.sql和文件some_table.txt這是DDL和該表的數據。