MySQL data import and export (for personal study and review)

This example will practice MySQL import and export operations


Example:

  1. The / etc / passwd file into the user table userdb library and added to each record number

  2. 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











Guess you like

Origin blog.51cto.com/11483827/2413972