Импортируйте большой файл MySQL .sql в Windows с помощью Force - PullRequest
5 голосов
/ 16 июня 2011

Я хотел бы импортировать 350-мегабайтный файл MySQL .sql на компьютер с Windows 7. Я обычно делаю это с помощью

mysql -uuser -p -e "source c:/path/to/file.sql" database

, поскольку <не работает в Powershell. </p>

Мой файл .sql на этот раз содержит ошибку. Я бы предпочел просто пропустить плохой ряд и продолжить импорт. Как я могу принудительно продолжить импорт в Windows?

В системах на основе Unix / Linux я мог бы использовать

mysql --force ... < file.sql

но, похоже, --force не работает с командой -e "source ..." (понятно).

Спасибо, Mike

Ответы [ 2 ]

13 голосов
/ 16 июня 2011

Возможно, вам понадобится, чтобы Powershell выполнил это на стандартной консоли, чтобы правильно использовать <. Технически вы могли бы использовать get-content и перенаправить вывод в mysql, но я всегда считал, что это медленно, и это каким-то образом сохраняет содержимое файла в памяти сеанса Powershell.

Вот так я бы выполнил его из приглашения Powershell (изменил путь к файлу, добавив пробелы для демонстрации внутренних кавычек, на всякий случай):

cmd /C 'mysql -uuser -p --force < "C:\path\with spaces\to\file.sql"'

[GC]::collect(), очевидно, очистит память, но вы не сможете сделать это до тех пор, пока это не будет сделано. Когда дело доходит до mysql и mysqldump, я не беспокоюсь о Powershell. Кодировка по умолчанию, используемая в >, - это Unicode, что делает файлы дампа вдвое больше, чем в Powershell, по сравнению с cmd, если вы не забудете написать | out-file dump.sql -enc ascii вместо > dump.sql.

2 голосов
/ 07 марта 2014

Я бы посоветовал также взглянуть на этот SO-ответ , в котором используется source команда SQL:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...