【问题标题】:mysql.exe output CSV file in Windowsmysql.exe 在 Windows 中输出 CSV 文件
【发布时间】:2018-08-06 12:05:56
【问题描述】:
mysql -u username -p"password" DbName -h host.com.us < inputFile.sql > outputFile.csv

我正在使用上述命令运行一个查询,该查询将在本地输出文件。该文件仅由制表符分隔。 我已经看到几个使用 shell 命令的答案,我需要 Windows 命令提示符的格式化命令。

【问题讨论】:

标签: mysql windows


【解决方案1】:

以下命令应该在 Windows 上的 PowerShell 命令提示符处执行您想要的操作:

Get-Content inputFile.sql | mysql -u username -p'password' DbName -h host.com.us | ForEach-Object { $_ -replace "\t","," } | Out-File outputFile.csv

请注意,为清楚起见,我已使用 PowerShell cmdlet 的全名编写了上述内容。通常将别名 gc 和 % 分别用于 Get-Content 和 ForEach-Object。

我经常遇到的一个问题是 PowerShell 默认使用 16 位 Unicode 编码,因此上述示例命令行生成的 outputFile.csv 将是 16 位 Unicode。 Out-File cmdlet 有一个 -Encoding 参数,可让您做出不同的选择,例如 UTF8。上面的命令可以改写为:

gc inputFile.sql | mysql -u username -p'password' dbName -h host.com.us | % { $_ -replace "\t","," } | Out-File -Encoding utf8 outputFile.csv

编辑:将密码分隔符更改为单引号,以防止 PowerShell 尝试字符串插值。

【讨论】:

  • "喷溅运算符 '@' 不能用于引用表达式中的变量。'@S2d' 只能用作命令的参数。要引用表达式中的变量,请使用 '$ S2d'。”
  • @user3704920 我需要更多上下文来理解您的评论
  • 我很抱歉。它没有将连接密码识别为字符串。将字符视为命令。
  • 啊,同样道歉 - 如果您将密码用单引号“因此”而不是双引号(“不是这样”)括起来,那么 PowerShell 不应该干扰它 - 我会编辑我的答案相应地。
  • 单引号也有同样的问题。奇怪的。 gc '/Users/first.last/Desktop/queryHere.sql' | mysql -u 'first.last' -p'KS2d&0j89j(@&jSjsJ!' DBName -h host.com.co.uk | % { $_ -replace "\t","," } | Out-File -Encoding utf8 '/Users/first.last/Desktop/myfile.csv'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-25
  • 2014-06-04
  • 2019-11-07
  • 2019-10-16
  • 1970-01-01
相关资源
最近更新 更多