reate an employee table and employee.txt datafile
For the examples mentioned in this article, let us create a very simple employee table with three columns–employee number, employee name and job.
mysql> use test
Database changed
mysql> create table employee
-> (
-> empno int,
-> ename varchar(15),
-> job varchar(10)
-> );
Query OK, 0 rows affected (0.01 sec)
Create a test datafile employee.txt with fields delimited by tab as shown below.
200 John Smith Sysadmin
300 Raj Patel Developer
1. Upload tab delimited datafile to MySQL table
Use mysqlimport to import the employee.txt datafile to employee table in test database, as shown below:
Verify that the records got uploaded successfully.
mysql> use test;
mysql> select * from employee;
+-------+------------+-----------+
| empno | ename | job |
+-------+------------+-----------+
| 100 | John Doe | DBA |
| 200 | John Smith | Sysadmin |
| 300 | Raj Patel | Developer |
+-------+------------+-----------+
3 rows in set (0.00 sec)
Note: In mysqlimport, the name of the datafile should match the name of the table. The extension of the datafile can be anything. In the above example, only employee.* datafile can be used to upload data to employee table. You’ll get the following error message when the filename is not same as tablename:
[Note: The table name is employee. So, datafile name should be employee.*]
2. Import multiple datafiles into multiple MySQL tables
The following example uploads data from two different datafiles to two different tables. i.e It uploads employee.txt to employee table and manager.txt to manager table.
3. Use LOAD DATA LOCAL INFILE to upload data to MySQL tables
The mysqlimport client is simply a command-line interface to the LOAD DATA LOCAL INFILE SQL statement. Most options to mysqlimport correspond directly to clauses of “load data local infile” syntax. You can perfrom the same upload explained in example#1 using “load data local infile” instead of mysqlimport as explained below:
mysql> use test;
mysql> LOAD DATA LOCAL INFILE '/home/ramesh/employee.txt'
-> INTO TABLE employee
-> FIELDS TERMINATED BY '\t'
-> LINES TERMINATED BY '\n'
-> (empno, ename, job);
Query OK, 3 rows affected (0.01 sec)
Records: 3 Deleted: 0 Skipped: 0 Warnings: 0
mysql> select * from employee;
+-------+------------+-----------+
| empno | ename | job |
+-------+------------+-----------+
| 100 | John Doe | DBA |
| 200 | John Smith | Sysadmin |
| 300 | Raj Patel | Developer |
+-------+------------+-----------+
3 rows in set (0.00 sec)
4. Most frequently used mysqlimport options
The most frequently used mysqlimport options are shown in the example below. Most of these options are self explanatory.
compress: Compress all information sent between the client and the server
delete: This option is very handy when you want to empty the table before importing the text file
local: Read input files locally from the client host
lock-tables: Lock all tables for writing before processing any text files. This ensures that all tables are synchronized on the server.
--password=tmppassword \
--columns=empno,ename,job \
--compress \
--delete \
--fields-optionally-enclosed-by='"' \
--fields-terminated-by='\t' \
--fields-escaped-by='' \
--lines-terminated-by='\n' \
--local \
--lock-tables \
--verbose \
test employee.txt
Output of the above mysqlimport command:
Connecting to localhost
Selecting database test
Locking tables for write
Deleting the old data from table employee
Loading data from LOCAL file: /home/ramesh/employee.txt into employee
test.employee: Records: 3 Deleted: 0 Skipped: 0 Warnings: 0
Disconnecting from localhost
For the examples mentioned in this article, let us create a very simple employee table with three columns–employee number, employee name and job.
- mysql -u root -ptmppassword
mysql> use test
Database changed
mysql> create table employee
-> (
-> empno int,
-> ename varchar(15),
-> job varchar(10)
-> );
Query OK, 0 rows affected (0.01 sec)
Create a test datafile employee.txt with fields delimited by tab as shown below.
- cat employee.txt
200 John Smith Sysadmin
300 Raj Patel Developer
1. Upload tab delimited datafile to MySQL table
Use mysqlimport to import the employee.txt datafile to employee table in test database, as shown below:
- mysqlimport -u root -ptmppassword --local test employee.txt
Verify that the records got uploaded successfully.
- mysql -u root -ptmppassword
mysql> use test;
mysql> select * from employee;
+-------+------------+-----------+
| empno | ename | job |
+-------+------------+-----------+
| 100 | John Doe | DBA |
| 200 | John Smith | Sysadmin |
| 300 | Raj Patel | Developer |
+-------+------------+-----------+
3 rows in set (0.00 sec)
Note: In mysqlimport, the name of the datafile should match the name of the table. The extension of the datafile can be anything. In the above example, only employee.* datafile can be used to upload data to employee table. You’ll get the following error message when the filename is not same as tablename:
- mysqlimport -u root -ptmppassword --local test emp.txt
[Note: The table name is employee. So, datafile name should be employee.*]
2. Import multiple datafiles into multiple MySQL tables
The following example uploads data from two different datafiles to two different tables. i.e It uploads employee.txt to employee table and manager.txt to manager table.
- mysqlimport -u root -ptmppassword --local test employee.txt manager.txt
3. Use LOAD DATA LOCAL INFILE to upload data to MySQL tables
The mysqlimport client is simply a command-line interface to the LOAD DATA LOCAL INFILE SQL statement. Most options to mysqlimport correspond directly to clauses of “load data local infile” syntax. You can perfrom the same upload explained in example#1 using “load data local infile” instead of mysqlimport as explained below:
- mysql -u root -ptmppassword
mysql> use test;
mysql> LOAD DATA LOCAL INFILE '/home/ramesh/employee.txt'
-> INTO TABLE employee
-> FIELDS TERMINATED BY '\t'
-> LINES TERMINATED BY '\n'
-> (empno, ename, job);
Query OK, 3 rows affected (0.01 sec)
Records: 3 Deleted: 0 Skipped: 0 Warnings: 0
mysql> select * from employee;
+-------+------------+-----------+
| empno | ename | job |
+-------+------------+-----------+
| 100 | John Doe | DBA |
| 200 | John Smith | Sysadmin |
| 300 | Raj Patel | Developer |
+-------+------------+-----------+
3 rows in set (0.00 sec)
4. Most frequently used mysqlimport options
The most frequently used mysqlimport options are shown in the example below. Most of these options are self explanatory.
compress: Compress all information sent between the client and the server
delete: This option is very handy when you want to empty the table before importing the text file
local: Read input files locally from the client host
lock-tables: Lock all tables for writing before processing any text files. This ensures that all tables are synchronized on the server.
- mysqlimport \
--password=tmppassword \
--columns=empno,ename,job \
--compress \
--delete \
--fields-optionally-enclosed-by='"' \
--fields-terminated-by='\t' \
--fields-escaped-by='' \
--lines-terminated-by='\n' \
--local \
--lock-tables \
--verbose \
test employee.txt
Output of the above mysqlimport command:
Connecting to localhost
Selecting database test
Locking tables for write
Deleting the old data from table employee
Loading data from LOCAL file: /home/ramesh/employee.txt into employee
test.employee: Records: 3 Deleted: 0 Skipped: 0 Warnings: 0
Disconnecting from localhost
No comments:
Post a Comment