mysql -u username -p"password" DbName -h host.com.us < inputFile.sql > outputFile.csv
我正在使用上面的命令运行一个查询,该查询将在本地输出文件。该文件仅由制表符分隔。 我已经看到几个使用 shell 命令的答案,我需要 Windows 命令提示符的格式化命令。
最佳答案
以下命令应该在 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 尝试字符串插值。
关于Windows 中的 mysql.exe 输出 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48998578/