I want to import a sql file of approx 12 mb. But its causing problem while loading. Is there any way to upload it without splitting the sql file ?
Try to import it from mysql console as per the taste of your OS.
mysql -u {DB-USER-NAME} -p {DB-NAME} < {db.file.sql path}
or if it's on a remote server use the -h flag to specify the host.
mysql -u {DB-USER-NAME} -h {MySQL-SERVER-HOST-NAME} -p {DB-NAME} < {db.file.sql path}
3 things you have to do:
in php.ini of your php installation (note: depending if you want it for CLI, apache, or nginx, find the right php.ini to manipulate)
post_max_size=500M
upload_max_filesize=500M
memory_limit=900M
or set other values.
Restart/reload apache if you have apache installed or php-fpm for nginx if you use nginx.
Remote server?
increase max_execution_time as well, as it will take time to upload the file.
NGINX installation?
you will have to add: client_max_body_size 912M; in /etc/nginx/nginx.conf to the http{...} block
Edit the config.inc.php file located in the phpmyadmin directory. In my case it is located at C:\wamp\apps\phpmyadmin3.2.0.1\config.inc.php.
Find the line with $cfg['UploadDir'] on it and update it to $cfg['UploadDir'] = 'upload';
Then, create a directory called ‘upload’ within the phpmyadmin directory (for me, at C:\wamp\apps\phpmyadmin3.2.0.1\upload\).
Then place the large SQL file that you are trying to import into the new upload directory. Now when you go onto the db import page within phpmyadmin console you will notice a drop down present that wasn’t there before – it contains all of the sql files in the upload directory that you have just created. You can now select this and begin the import.
If you’re not using WAMP on Windows, then I’m sure you’ll be able to adapt this to your environment without too much trouble.
Reference : http://daipratt.co.uk/importing-large-files-into-mysql-with-phpmyadmin/comment-page-4/
Solution for LINUX USERS (run with sudo)
Create 'upload' and 'save' directories:
mkdir /etc/phpmyadmin/upload
mkdir /etc/phpmyadmin/save
chmod a+w /etc/phpmyadmin/upload
chmod a+w /etc/phpmyadmin/save
Then edit phpmyadmin's config file:
gedit /etc/phpmyadmin/config.inc.php
Finally add absolute path for both 'upload' and 'save' directories:
$cfg['UploadDir'] = '/etc/phpmyadmin/upload';
$cfg['SaveDir'] = '/etc/phpmyadmin/save';
Now, just drop files on /etc/phpmyadmin/upload folder and then you'll be able to select them from phpmyadmin.
Hope this help.
Just one line and you are done (make sure mysql command is available as global or just go to mysql installation folder and enter into bin folder)
mysql -u database_user_name -p -D database_name < complete_file_path_with_file_name_and_extension
Here
u stands for User
p stands for Password
D stands for Database
---DON'T FORGET TO ADD < SIGN AFTER DATABASE NAME---
Complete file path with name and extension can be like
c:\folder_name\"folder name"\sql_file.sql
---IF YOUR FOLDER AND FILE NAME CONTAINS SPACE THAN BIND THEM USING DOUBLE QUOTE---
Tip and Note: You can write your password after -p but this is not recommended because it will show to others who are watching your screen at that time, if you don't write there it will ask you when you will execute command by pressing enter.
Create a zip or tar file and upload in phpmyadmin thats it..!
I was able to import a large .sql file by having the following configuration in httpd.conf file:
Alias /phpmyadmin "C:/xampp/phpMyAdmin/"
<Directory "C:/xampp/phpMyAdmin">
AllowOverride AuthConfig
Require all granted
php_admin_value upload_max_filesize 128M
php_admin_value post_max_size 128M
php_admin_value max_execution_time 360
php_admin_value max_input_time 360
</Directory>
I dont understand why nobody mention the easiest way....just split the large file with http://www.rusiczki.net/2007/01/24/sql-dump-file-splitter/
and after just execute vie mySQL admin the seperated generated files starting from the one with Structure
Ok you use PHPMyAdmin but sometimes the best way is through terminal:
Connect to database: mysql -h localhost -u root -p (switch root and localhost for user and database location)
Start import from dump: \. /path/to/your/file.sql
Go take a coffe and brag about yourself because you use terminal.
And that's it. Just remember if you are in a remote server, you must upload the .sql file to some folder.
PHPmyadmin also accepts compressed files in gzip format, so you can gzip the file (Use 7Zip if you don't have any) and upload the zipped file. Since its a text file, it will have a good compress ratio.
You will have to edit the php.ini file. change the following upload_max_filesize post_max_size to accommodate your file size.
Trying running phpinfo() to see their current value. If you are not at the liberty to change the php.ini file directly try ini_set()
If that is also not an option, you might like to give bigdump a try.
One solution is to use the command line;
mysql -h yourhostname -u username -p databasename < yoursqlfile.sql
Just ensure the path to the SQL file to import is stated explicitly.
In my case, I used this;
mysql -h localhost -u root -p databasename < /home/ejalee/dumps/mysqlfile.sql
Voila! you are good to go.
For that you will have to edit php.ini file, If you are using the ubuntu server this is link Upload large file in phpMyAdmin might help you.
In MAMP, You could load huge files by :
creating a new folder in this directory
/MAMP/bin/phpMyAdmin/"folderName"
and then edit "/MAMP/bin/phpMyAdmin/config.inc.php" line 531 :
$cfg['UploadDir']= 'folderName';
Copy your .sql or .csv Files into this folder.
Now you will have another option in "PhpMyAdmin" : Select from the
web server upload directory newFolder/: You could select your file and import
it.
You could load any file now !!
I stumbled on an article and this worked best for me
Open up the config.inc.php file within the phpmyadmin dir with your favorite code editor. In your local MAMP environment, it should be located here:
Hard Drive » Applications » MAMP » bin » config.inc.php
Do a search for the phrase $cfg[‘UploadDir’] – it’s going to look like this:
$cfg['UploadDir'] = '';
Change it to look like this:
$cfg['UploadDir'] = 'upload';
Then, within that phpmyadmin dir, create a new folder & name it upload.
Take that large .sql file that you’re trying to import, and put it in that new upload folder.
Now, the next time you go to import a database into phpMyAdmin, you’ll see a new dropdown field right below the standard browse area in your “File to Import” section.
the answer for those with shared hosting. Best to use this little script which I just used to import a 300mb DB file to my server. The script is called Big Dump.
provides a script to import large DB's on resource-limited servers
Best way to upload a large file not use phpmyadmin . cause phpmyadin at first upload the file using php upload class then execute sql that cause most of the time its time out happened.
best way is :
enter wamp folder>bin>mysql>bin dirrectory then write this line
mysql -u root -p listnames < latestdb.sql
here listnames is the database name at first please create the empty database
and the latestdb.sql is your sql file name where your data present .
but one important thing is if your database file has unicode data . you must need to open your latestdb.sql file and one line before any line . the line is :
SET NAMES utf8;
then your command mode run this script code
I have made a PHP script which is designed to import large database dumps which have been generated by phpmyadmin. It's called PETMI and you can download it here [project page] [gitlab page]. It has been tested with a 1GB database.
First, copy your mysql database to local disk C:\ for easy file location and now open your command prompt.
Meawhile, Navigate to mysql bin folder eg if you are using xampp, run or type the code below.
cd/ This take you to local disk pointer
cd xampp This take you to xampp folder
cd mysql This take you to mysql folder
cd bin This take you to bin folder
and run the code below
mysql -u dbusername -p -D dbname < c:\yourdbtoupload.sql
This will promt enter password, enter your password or click enter button if you are not using password
Change your server settings to allow file uploads larger than 12 mb and you should be fine.
Usually the server settings are set to 5 to 8 mb for file uploads.
Open your sql file in a text editor (like Notepad)
Select All -> Copy
Go to phpMyAdmin, select your database and go to SQL tab
Paste the content you have copied in clipboard
It might popup a javascript error, ignore it
Execute
/Applications/XAMPP/xamppfiles/etc/php.ini
First find this location -> open php.ini file in notepad or sublime text
Then find this "post_max_size, upload_max_filesize, memory_limit" in php.ini text and change size like below
post_max_size=450M
upload_max_filesize=450M
memory_limit=700M
Notes : Before do this stop phpmyadmin in xampp or wamp and do above methods and then startall (xampp or manager-osx) it will work perfectly. Then you can able to upload large files in phpmyadmin. Thanks
For windows, first of all open xampp and right click Config and open php.ini file. After in php.ini file update this code
post_max_size = 800M
upload_max_filesize = 800M
max_execution_time = 6000
max_input_time = 6000
memory_limit = 1000M
Related
I'm helping a non-profit organization with a large website they run. Their current host/developer hasn't responded to them in over a year. They want to get their files and database and move to a new host.
When I load the phpMyAdmin page and try to log in, it returns the following error.
#2000 - (mysqlnd_ms) Exclusive usage of configuration enforced but did not find the correct INI file section
What could be causing this? Is there a problem with the php.ini configuration?
Thank you for your help.
mysqldump recipe:
SSH in using the website user (or root and then su to website user)
cd to the public_html or httpdocs folder cd httpdocs
mysqldump -cuUSER_NAME -p DATABASE_NAME -eqQc > filename.sql
(USER_NAME is MySQL connection user name, if you don't have it and DATABASE_NAME try downloading all the script files for the site and looking through them for MySQL code.)
Optional : gzip -9 filename.sql
Download filename.sql or .gz with your FTP program. 7-zip can extract from .gz files.
I want periodic mysql database backup. But I don't have permission to access ssh. When I try to run mysqldump via command line in Plesk Scheduled Tasks, it only creates a blank file 0 kb sized. I'm not sure if the system finds mysqldump when I write it in command line. How can I be sure mysqldump file exists in my server? How can I find its path? It doesn't exist in bin or usr folders. Is there a way to access this file? I can backup database via PhpMyAdmin manually. But I want periodic backups. Thanks.
Osman.
You can try to create a php script with the following code block:
<?php echo `which mysqldump`; ?>
Please note, those are backticks.
This may or may not work depending on whether or not open_basedir is setup on the server. This can give you the absolute path to the mysqldump binary, which you can then reference in the plesk sched. task.
Since you don't have control over the server, if the above doesn't work, you'll need to ask the server owner to either grant you access to mysqldump or use phpMyAdmin (assuming your dataset isn't too large).
This worked for me...
exec('complete\path\to\mysqldump.exe -uUSERNAME -pPASSWORD DATABASE_NAME > output_folder_path/filename.sql');
if u want the path goto your wamp folder & search for mysqldump.exe
What is a way to import a 40GB+ .sql file into a MySQL database, that works?
I tried big dump. I tried loading the .sql into workbench and executing.
None of the methods I tried so far, have worked.
I was wondering what is the best way or even a-way (that works) of importing such a large database .sql into mysql? Note that splitting the SQL file into chunks may not work, as some tables are larger than 5GB.
I appreciate any suggestions.
I imported a big dump file like this: mysql -u username -p database_name < your_dump.sql
Step 1: Make changes to the configuration file: my.cnf (located in C:\ProgramData directory in Windows if running MySQL V5.6, Note: this directory is hidden by default, you must enable visibility of hidden files in Folder Options).
max_allowed_packet=2000M
Step 2: Restart MySQL service
Step 3: Use the following dump command:
mysql -hhostname -uusername -ppassword db_name
< C:\sql_input_path\db.sql > C:\error_log_output_path\error.txt
I am trying to upload a database backup into my local MySql database using PhpMyAdmin
When I try to import my .sql backup file it go into error and it say to me that maybe the file is too big (31 mb)
Reading the documentation it seems to me that I can change some configuration file to change the size value but I can't find this configuration file and this value
Someone can help me?
Tnx
Andrea
The phpMyAdmin manual has several alternative suggestions.
These include:
Using the $cfg['UploadDir'] feature to upload the file to the web server, which can help overcome upload or timeout limitations,
Using a third-party utility especially designed for this purpose, such as BigDump, or
Using the MySQL command line interface, when shell access is available.
You should import from command line, here you will not need to change configuration
Linux Shell
shell> mysqldump db_name < backup-file.sql
Windows CMD
mysql.exe -p -u[user] [database] < backup-file.sql
And for phpMyAdmin import file size Link
Heres the deal. Removed mysql 5.0.xx and neglected to dump a data folder which is on a mounted drive.
I have mySql 5.6.5 now installed and running and the data folder works fine in the default directory. I attempted to switch the data dir in the my.conf file but that results in the error "The server quit without updating PID file."
What I would like to do is still have my.conf point at the default data directory while also adding the external database to MySQL. This is how I had it set up in mySql 5.0.xx. The only problem is I created the database via a GUI and specified that the data would actually be stored in the mounted drive. I can't quite figure out how to do this via the command line and I have found no good sources of documentation or examples.
You probably created a symbolic link to the directory on the mounted drive. This is done with the ln command:
cd /var/lib/mysql
ln -s /mounted_drive/data_directory/db_name db_name
On Ubuntu the MySQL data folder resides in /var/lib
Generally you can set this variable in my.cnf http://dev.mysql.com/doc/refman/5.6/en/server-options.html#option_mysqld_datadir in order to change the default data directory.