I would like to import a 350MB MySQL .sql file on a Windows 7 machine. I usually do this by using
mysql -uuser -p -e "source c:/path/to/file.sql" database
since < doesn't work in Powershell.
My .sql file has an error in it this time. I'd prefer to just skip the bad row and continue the import. How can I force the import to continue on Windows?
On a unix/linux based system, I could use
mysql --force ... < file.sql
but --force doesn't seem to work with the -e "source ..." command (understandably so).
Thanks, Mike
Here comes in handy the sqlcmd command line tool. It can import large . sql files, can be run from a batch script, installer, etc. How to use sqlcmd command-line tool to import large .
To execute a large script, do the following: To open the Execute Script Wizard, go to the Database menu, and click Execute Large Script. Click the Connection field to select a connection to a required database server against which you want to execute your script.
You're probably going to have to have Powershell execute this in the standard console in order to use <
properly. Technically you could use get-content
and pipe the output to mysql
, but I've always found that to be slow, and it somehow still keeps the file contents in memory of the Powershell session.
This is how I would execute it from the Powershell prompt (changed file path to include spaces to demonstrate inner quotes, just in case):
cmd /C 'mysql -uuser -p --force < "C:\path\with spaces\to\file.sql"'
[GC]::collect()
would apparently clear it up the memory, but you can't do that until after it's done anyway. When it comes to mysql
and mysqldump
, I don't bother with Powershell. The default encoding used in >
is Unicode, making dump files twice as big out of Powershell as out of cmd
unless you remember to write | out-file dump.sql -enc ascii
instead of > dump.sql
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With