如何逃避"<"?

时间:2017-09-05 22:15:20

标签: mysql string powershell escaping

如何在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';

2 个答案:

答案 0 :(得分:4)

PowerShell不支持输入重定向(<)。使用CMD(来自PowerShell)执行命令:

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

或将文件内容传递到命令中:

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

答案 1 :(得分:0)

使用输入重定向的另一种方法是在mysql客户端中使用source命令。

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和该表的数据。