mysql -u username -p"password" DbName -h host.com.us < inputFile.sql > outputFile.csv
Я использую приведенную выше команду для запуска запроса, который будет выводить файл локально. Файл ограничивается только вкладками. Я видел несколько ответов, которые используют команду оболочки, и мне нужны команды форматирования для командной строки Windows.
Следующая команда должна делать то, что вы хотите в командной строке PowerShell в Windows:
Get-Content inputFile.sql | mysql -u username -p'password' DbName -h host.com.us | ForEach-Object { $_ -replace "\t","," } | Out-File outputFile.csv
Обратите внимание, что я написал выше, используя полные имена командлетов PowerShell для ясности. Обычно можно использовать псевдонимы gc и% для Get-Content и ForEach-Object соответственно.
Морщинка, которая часто меня ловит, заключается в том, что PowerShell по умолчанию использует 16-разрядную кодировку Unicode, поэтому outputFile.csv, созданный в приведенной выше командной строке, будет 16-разрядным Unicode. Командлет Out-File имеет параметр -Encoding, позволяющий сделать другой выбор, например UTF8. Вышеупомянутая команда может быть переписана как:
gc inputFile.sql | mysql -u username -p'password' dbName -h host.com.us | % { $_ -replace "\t","," } | Out-File -Encoding utf8 outputFile.csv
Изменение: Изменены разделители паролей на одинарные кавычки, чтобы предотвратить попытку использования PowerShell для строковых интерполяций.