This example will practice MySQL import and export operations
Example:
The / etc / passwd file into the user table userdb library and added to each record number
The UID userdb library user table 100 is less than the first 10 rows of the export file saved as /mydata/user1.txt
Userdb new library, library switches to userdb, and provided the following fields;
mysql> create database userdb; Query OK, 1 row affected (0.00 sec) mysql> use userdb; Database changed mysql> create table user( -> username varchar(24) not null, -> password varchar(48) default 'x', -> uid int(5) not null, -> gid int(5) not null, -> fullname varchar(48), -> homedir varchar(64) not null, -> shell varchar(24) not null -> ); Query OK, 0 rows affected (0.01 sec) mysql> desc user; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | username | varchar(24) | NO | | NULL | | | password | varchar(48) | YES | | x | | | uid | int(5) | NO | | NULL | | | gid | int(5) | NO | | NULL | | | fullname | varchar(48) | YES | | NULL | | | homedir | varchar(64) | NO | | NULL | | | shell | varchar(24) | NO | | NULL | | +----------+-------------+------+-----+---------+-------+ 7 rows in set (0.01 sec)
Note: After MySQL 5.7.6 version, can import files in the folder secure_file_priv specified file. If the direct import error. Execution show variables like '% secure%' command displays the file directory:
mysql> load data infile '/etc/passwd' into table user fields terminated by ':'; ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement mysql> show variables like '%secure%'; +--------------------------+-----------------------+ | Variable_name | Value | +--------------------------+-----------------------+ | require_secure_transport | OFF | | secure_auth | ON | | secure_file_priv | /var/lib/mysql-files/ | +--------------------------+-----------------------+ 3 rows in set (0.00 sec)
Import operation
- Copy the / etc / passwd file to / var / lib / mysql-files / directories,
- read / var / lib / mysql-files / passwd file contents, a ":" is separated into the user table:
[root@host50 ~]#cp /etc/passwd /var/lib/mysql-files/ mysql> LOAD DATA INFILE '/var/lib/mysql-files/passwd' -> INTO TABLE user -> FIELDS TERMINATED BY ':'; Query OK, 42 rows affected (0.11 sec) Records: 42 Deleted: 0 Skipped: 0 Warnings: 0
Note: The above-described operation is omitted line separator LINES TERMINATED BY '\ n', because this is the default case (original record per line), unless otherwise required character segmentation line, only need to use this.
Confirm the results of the import
mysql> select count(*) from user; +----------+ | count(*) | +----------+ | 42 | +----------+ 1 row in set (0.00 sec) mysql> select * from user limit 10; +----------+----------+-----+-----+----------+-----------------+----------------+ | username | password | uid | gid | fullname | homedir | shell | +----------+----------+-----+-----+----------+-----------------+----------------+ | root | x | 0 | 0 | root | /root | /bin/bash | | bin | x | 1 | 1 | bin | /bin | /sbin/nologin | | daemon | x | 2 | 2 | daemon | /sbin | /sbin/nologin | | adm | x | 3 | 4 | adm | /var/adm | /sbin/nologin | | lp | x | 4 | 7 | lp | /var/spool/lpd | /sbin/nologin | | sync | x | 5 | 0 | sync | /sbin | /bin/sync | | shutdown | x | 6 | 0 | shutdown | /sbin | /sbin/shutdown | | stop | x | 7 | 0 | stop | / Sbin | / Sbin / halt | | mail | x | 8 | 12 | mail | /var/spool/mail | /sbin/nologin | | operator | x | 11 | 0 | operator | /root | /sbin/nologin | +----------+----------+-----+-----+----------+-----------------+----------------+ 10 rows in set (0.00 sec)
Add automatic numbering for each record in the user table, and automatically verify the written results
mysql> alter table user add sn int(4) auto_increment primary key first; Query OK, 0 rows affected (0.03 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> select * from user limit 10; +----+----------+----------+-----+-----+----------+-----------------+----------------+ | sn | username | password | uid | gid | fullname | homedir | shell | +----+----------+----------+-----+-----+----------+-----------------+----------------+ | 1 | root | x | 0 | 0 | root | /root | /bin/bash | | 2 | bin | x | 1 | 1 | bin | /bin | /sbin/nologin | | 3 | daemon | x | 2 | 2 | daemon | /sbin | /sbin/nologin | | 4 | adm | x | 3 | 4 | adm | /var/adm | /sbin/nologin | | 5 | lp | x | 4 | 7 | lp | /var/spool/lpd | /sbin/nologin | | 6 | sync | x | 5 | 0 | sync | /sbin | /bin/sync | | 7 | shutdown | x | 6 | 0 | shutdown | /sbin | /sbin/shutdown | | 8 | stop | x | 7 | 0 | stop | / Sbin | / Sbin / halt | | 9 | mail | x | 8 | 12 | mail | /var/spool/mail | /sbin/nologin | | 10 | operator | x | 11 | 0 | operator | /root | /sbin/nologin | +----+----------+----------+-----+-----+----------+-----------------+----------------+ 10 rows in set (0.00 sec)
Export query results from a MySQL database
- to derive userdb library user UID is less than the front table 10 records file 100 is an example /myload/user2.txt
First, modify the configuration file stored in the export import directory and see what your edits
[root@host50 ~]# mkdir /myload ; chown mysql /myload [root@host50 ~]# vim /etc/my.cnf [mysqld] secure_file_priv="/myload" [root@dbsvr1 ~]# systemctl restart mysqld mysql> show variables like "secure_file_priv"; +------------------+----------+ | Variable_name | Value | +------------------+----------+ | secure_file_priv | /myload/ |
Export UID user table 100 is less than the first ten records
mysql> select * from userdb.user where uid<100 -> into outfile '/myload/user.txt' -> fields terminated by ":"; Query OK, 26 rows affected (0.00 sec)
The results confirm the export
[root@host50 ~]# wc -l /myload/user.txt 26 /myload/user.txt [root@host50 ~]# tail /myload/user.txt 25:tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin 29:rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin 33:gdm:x:42:42::/var/lib/gdm:/sbin/nologin 35:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin 36:avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin 37:postfix:x:89:89::/var/spool/postfix:/sbin/nologin 38:ntp:x:38:38::/etc/ntp:/sbin/nologin 39:tcpdump:x:72:72::/:/sbin/nologin 41:apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin 42:mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false