mysql.exe выходной файл CSV в Windows

0
mysql -u username -p"password" DbName -h host.com.us < inputFile.sql > outputFile.csv

Я использую приведенную выше команду для запуска запроса, который будет выводить файл локально. Файл ограничивается только вкладками. Я видел несколько ответов, которые используют команду оболочки, и мне нужны команды форматирования для командной строки Windows.

  • 0
    Это похоже на работу stackoverflow.com/questions/32856809/…
  • 0
    Исходный файл @NanoPish не работает в командной строке Windows.
Теги:

1 ответ

1
Лучший ответ

Следующая команда должна делать то, что вы хотите в командной строке 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 для строковых интерполяций.

  • 0
    «Оператор« @ »нельзя использовать для ссылки на переменные в выражении.« @ S2d »можно использовать только в качестве аргумента команды. Для ссылки на переменные в выражении используйте« $ S2d »."
  • 0
    @ user3704920 Мне нужно немного больше контекста, чтобы понять твой комментарий
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню