[Solved] Import CSV file into MySQL using phpMyAdmin
I have searched and read many posts/articles regarding importing a CSV file into a MySQL database using
phpMyAdmin 18.104.22.168 and they make it sound so simple, in actually it is not. Nothing I do works correctly.
I have a table with 2 columns, both defined as
NOT NULL. The primary index is configured to use both columns. I have many CSV files to import but I’m starting with the small ones first. Here is a sample of my CSV data file:
type description T Antarctic Territory T Dependency T Independent State T Proto Dependency T Proto Independent State
There are only 17 rows to import but usually I get 0 rows inserted and sometimes I get 1 row inserted but it is in the wrong format. What I mean is that column 1 is blank and column 2 contains the data of both columns, in the wrong order. This is the SQL generated by my import attempt:
LOAD DATA LOCAL INFILE '/var/php_sessions/uploads/phpiptDPV' REPLACE INTO TABLE `country_types` FIELDS TERMINATED BY ' ' LINES TERMINATED BY ' ' IGNORE 1 LINES ( `type` , `description` )# MySQL returned an empty result set (i.e. zero rows).
Can anyone see where I’m going wrong? I’ve spent a few days researching and trying different things but I’m ready to throw out phpMyAdmin.
The problem is with
LOCAL. There are two concepts of “local” in this case. You probably mean that the CSV file is on the workstation where you are running your browser accessing phpMyAdmin.
LOAD DATA LOCAL INFILE statement is running on the web server where phpMyAdmin is running. So it’s looking for the file on the web server. When I tried this I got this error output by phpMyAdmin:
#7890 - Can't find file '/Users/billkarwin/t.csv'.
You can try using phpMyAdmin’s Import feature.
- Select your table.
- Click the Import tab.
- Click the Choose file button to browse to your local csv file.
- Select the ‘CSV using LOAD DATA’ for Format.
- Choose other Format-Specific Options.
- Click Go.
The following steps worked for me.
Import the file to a dummy database (i.e. don’t select any database).
Hit import and select the appropriate CSV file that you want to load the data with.
phpMyadmin will create a database and an appropriate table to hold the data.
Hit export and select the SQL format
You will get to download an SQL file.
The file will have the appropriate query to insert the data into your table.
Make sure you change the default table name and column name to match your table name and column names.
I have finally found an easy and reliable way to import from Excel to phpMyAdmin. Save in Excel in OpenDocument Spreadsheet format. Import into phpMyAdmin in that same format. Poof, it’s all there. It sets up column names as A, B, C,… etcetera, but other than that it’s flawless.
I have just saved myself another day of fiddling with quote marks, escapes, trailing tabs, extra carriage returns, delimiting delimiters, and professional database wrestling.