日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

【MySQL】MySQL之导入和导出

發布時間:2023/12/20 数据库 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【MySQL】MySQL之导入和导出 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本篇來演示MySQL的導入和導出。
MySQL之導出
可以使用以下兩種方法進行MySQL的導出,分別為:
  • SELECT ... INTO OUTFILE ...
  • Mysqldump工具

1、SELECT ... INTO OUTFILE ... 1)語法如下: SELECT * FROM tablename INTO OUTFILE 'target_file' [option]; 其中option參數可以是以下選項:
  • FIELDS TERMINATED BY 'string'(字段分隔符,默認為制表符‘\t’);
  • FIELDS [OPTIONALLY] ENCLOSED BY 'char' (字段引用符,如果加OPTIONALLY選項則只用在char、varchar和text等字符型字段上,默認不使用引用符);
  • FIELDS ESCAPED BY ‘char’ (轉義字符,默認為‘\’);
  • LINES STARTING BY ‘string’ (每行前都加此字符串,默認‘’);
  • LINES TERMINATED BY ‘string’ (行結束符,默認為‘\n’);
2)使用默認選項導出數據庫test下的t_mm表; mysql> select *from t_mm into outfile '/usr/local/mysql/mysql-files/emp.txt'; Query OK, 6 rows affected (0.04 sec)mysql> system more /usr/local/mysql/mysql-files/emp.txt; 1 Alen 2018-03-09 15:33:03 3 UK 2018-03-09 15:35:55 4 Japan 2018-03-09 12:36:16 6 USA 2018-03-09 13:19:35 8 Begin MMM.... 2018-03-09 14:54:40 10 Hello 2018-03-12 15:33:22 mysql> 注:如果有同名的文件,則導出失敗; 3)使用帶選項的語句導出數據庫test下的t_mm表; mysql> select *from t_mm into outfile '/usr/local/mysql/mysql-files/emp.txt' fields terminated by ',' enclosed by '"'; Query OK, 6 rows affected (0.00 sec)mysql> system more /usr/local/mysql/mysql-files/emp.txt; "1","Alen","2018-03-09 15:33:03" "3","UK","2018-03-09 15:35:55" "4","Japan","2018-03-09 12:36:16" "6","USA","2018-03-09 13:19:35" "8","Begin MMM....","2018-03-09 14:54:40" "10","Hello","2018-03-12 15:33:22" mysql> 4)如上,第一列是數字類型,不希望用引號引起,語句可改為: mysql> select *from t_mm into outfile '/usr/local/mysql/mysql-files/emp.txt' fields terminated by ',' optionally enclosed by '"'; Query OK, 6 rows affected (0.00 sec)mysql> system more /usr/local/mysql/mysql-files/emp.txt; 1,"Alen","2018-03-09 15:33:03" 3,"UK","2018-03-09 15:35:55" 4,"Japan","2018-03-09 12:36:16" 6,"USA","2018-03-09 13:19:35" 8,"Begin MMM....","2018-03-09 14:54:40" 10,"Hello","2018-03-12 15:33:22" mysql>
2、Mysqldump工具 1)語法如下: mysqldump -uusername -p -T target_dir dbname tablename [option] 其中option參數可以是以下選項:
  • --fields-terminated-by=name(字段分隔符);
  • --fields-enclosed-by=name(字段引用符);
  • --fields-optionally-enclosed-by=name(字段引用符,只用在char、varchar和text等字符型字段上);
  • --fields-escaped-by=name(轉義字符);
  • --lines-terminated-by=name(記錄結束符);
2)使用默認選項導出數據庫test下的所有表; mysql> system mysqldump -uroot -p -T /usr/local/mysql/mysql-files/ test; Enter password: mysql> system ls -l /usr/local/mysql/mysql-files/ total 16 -rw-r--r--. 1 root root 1437 Mar 13 22:11 t_emp.sql -rw-rw-rw-. 1 mysql mysql 111 Mar 13 22:11 t_emp.txt -rw-r--r--. 1 root root 1435 Mar 13 22:11 t_mm.sql -rw-rw-rw-. 1 mysql mysql 171 Mar 13 22:11 t_mm.txt mysql> mysql> system more /usr/local/mysql/mysql-files/t_emp.txt 1 張三 2018-03-13 18:53:44 3 李四 2018-03-13 18:53:44 5 Alen 2018-03-13 17:37:34 7 USA 2018-03-13 17:39:45 mysql> system more /usr/local/mysql/mysql-files/t_emp.sql--導出表定義腳本 3)使用帶選項的語句導出數據庫test下的t_emp表; mysql> system mysqldump -uroot -p -T /usr/local/mysql/mysql-files/ test t_emp --fields-terminated-by=',' --fields-optionally-enclosed-by='"'; Enter password: mysql> system ls -l /usr/local/mysql/mysql-files/ total 8 -rw-r--r--. 1 root root 1437 Mar 13 22:18 t_emp.sql -rw-rw-rw-. 1 mysql mysql 127 Mar 13 22:18 t_emp.txt mysql> system more /usr/local/mysql/mysql-files/t_emp.txt 1,"張三","2018-03-13 18:53:44" 3,"李四","2018-03-13 18:53:44" 5,"Alen","2018-03-13 17:37:34" 7,"USA","2018-03-13 17:39:45" mysql> 以上,可以發現,mysqldump和select...into outfile...的選項和語法非常相似,其實,mysqldump實際調用的就是后者提供的接口,并在其上增添了新功能而已。
MySQL之導入
MySQL的導入功能和導出相對應,也有兩種導入方式,分別為:
  • LOAD DATA INFILE...
  • MySQLImport工具

1、LOAD DATA INFILE... 1)語法如下: LOAD DATA [LOCAL] INFILE 'filename' INTO TABLE tablename [option] 其中option參數可以是以下選項:
  • FIELDS TERMINATED BY 'string'(字段分隔符,默認為制表符‘\t’);
  • FIELDS [OPTIONALLY] ENCLOSED BY 'char' (字段引用符,如果加OPTIONALLY選項則只用在char、varchar和text等字符型字段上,默認不使用引用符);
  • FIELDS ESCAPED BY ‘char’ (轉義字符,默認為‘\’);
  • LINES STARTING BY ‘string’ (每行前都加此字符串,默認‘’);
  • LINES TERMINATED BY ‘string’ (行結束符,默認為‘\n’);
  • IGNORE number LINES(忽略輸入文件中的前n行數據);
  • (col_name_or_user_var,...)(按照列出的字段順序和字段數量加載數據);
  • SET col_name=expr,...將列做一定的數值轉換后再加載;
2)加載導出的t_emp表數據; mysql> load data infile '/usr/local/mysql/mysql-files/t_emp.txt' into table t_emp fields terminated by ',' optionally enclosed by '"'; Query OK, 4 rows affected (0.02 sec) Records: 4 Deleted: 0 Skipped: 0 Warnings: 0mysql> select *from t_emp; +----+--------+---------------------+ | id | name | cdate | +----+--------+---------------------+ | 1 | 張三 | 2018-03-13 18:53:44 | | 3 | 李四 | 2018-03-13 18:53:44 | | 5 | Alen | 2018-03-13 17:37:34 | | 7 | USA | 2018-03-13 17:39:45 | +----+--------+---------------------+ 4 rows in set (0.00 sec)mysql> 3)如果不希望加載前2行,可以用以下語句: mysql> truncate table t_emp; Query OK, 0 rows affected (0.06 sec) mysql> load data infile '/usr/local/mysql/mysql-files/t_emp.txt' into table t_emp fields terminated by ',' enclosed by '"' ignore 2 lines; Query OK, 2 rows affected (0.03 sec) Records: 2 Deleted: 0 Skipped: 0 Warnings: 0mysql> select *from t_emp; +----+------+---------------------+ | id | name | cdate | +----+------+---------------------+ | 5 | Alen | 2018-03-13 17:37:34 | | 7 | USA | 2018-03-13 17:39:45 | +----+------+---------------------+ 2 rows in set (0.00 sec) mysql> system more /usr/local/mysql/mysql-files/t_emp.txt 1,"張三","2018-03-13 18:53:44" 3,"李四","2018-03-13 18:53:44" 5,"Alen","2018-03-13 17:37:34" 7,"USA","2018-03-13 17:39:45" mysql> 4)使用LINES STARTING BY ‘string’選項過濾數據; mysql> system more /usr/local/mysql/mysql-files/t_emp.txt Alen1,"張三","2018-03-13 18:53:44" 3,"李四","2018-03-13 18:53:44" Alen5,"Alen","2018-03-13 17:37:34" 7,"USA","2018-03-13 17:39:45" mysql> load data infile '/usr/local/mysql/mysql-files/t_emp.txt' into table t_emp fields terminated by ',' enclosed by '"' lines starting by 'Alen'; Query OK, 2 rows affected (0.05 sec) Records: 2 Deleted: 0 Skipped: 0 Warnings: 0mysql> select *from t_emp; +----+--------+---------------------+ | id | name | cdate | +----+--------+---------------------+ | 1 | 張三 | 2018-03-13 18:53:44 | | 5 | Alen | 2018-03-13 17:37:34 | +----+--------+---------------------+ 2 rows in set (0.00 sec)mysql> 注:LINES STARTING BY ‘string’選項時,可跳過指定字符的前綴以及前綴之前的所有字符,如果某行不包含該指定字符,則該行記錄也會被跳過。 5)表中的列數多于數據文件時的處理; mysql> desc t_emp; +-------+--------------+------+-----+-------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+-------------------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(100) | YES | | NULL | | | cdate | datetime | YES | | CURRENT_TIMESTAMP | | | sex | char(1) | YES | | NULL | | +-------+--------------+------+-----+-------------------+----------------+ 4 rows in set (0.00 sec)mysql> system more /usr/local/mysql/mysql-files/t_emp.txt 1,"張三","2018-03-13 18:53:44" 3,"李四","2018-03-13 18:53:44" 5,"Alen","2018-03-13 17:37:34" 7,"USA","2018-03-13 17:39:45" mysql> truncate table t_emp; Query OK, 0 rows affected (0.07 sec)mysql> load data infile '/usr/local/mysql/mysql-files/t_emp.txt' into table t_emp fields terminated by ',' enclosed by '"' (id,name,cdate); Query OK, 4 rows affected (0.06 sec) Records: 4 Deleted: 0 Skipped: 0 Warnings: 0mysql> select *from t_emp; +----+--------+---------------------+------+ | id | name | cdate | sex | +----+--------+---------------------+------+ | 1 | 張三 | 2018-03-13 18:53:44 | NULL | | 3 | 李四 | 2018-03-13 18:53:44 | NULL | | 5 | Alen | 2018-03-13 17:37:34 | NULL | | 7 | USA | 2018-03-13 17:39:45 | NULL | +----+--------+---------------------+------+ 4 rows in set (0.00 sec)mysql> 6)表中的列數少于數據文件時的處理; mysql> desc t_emp; +-------+--------------+------+-----+-------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+-------------------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(100) | YES | | NULL | | | cdate | datetime | YES | | CURRENT_TIMESTAMP | | | sex | int(1) | YES | | NULL | | +-------+--------------+------+-----+-------------------+----------------+ 4 rows in set (0.00 sec)mysql> system more /usr/local/mysql/mysql-files/t_emp.txt 1,1,"張三","2018-03-13 18:53:44",25 3,1,"李四","2018-03-13 18:53:44",24 5,1,"Alen","2018-03-13 17:37:34",30 7,0,"Lucy","2018-03-13 17:39:45",20 mysql> truncate table t_emp; Query OK, 0 rows affected (0.07 sec)mysql> load data infile '/usr/local/mysql/mysql-files/t_emp.txt' into table t_emp fields terminated by ',' enclosed by '"' (id,sex,name,cdate,@tmp); Query OK, 4 rows affected (0.03 sec) Records: 4 Deleted: 0 Skipped: 0 Warnings: 0mysql> select *from t_emp; +----+--------+---------------------+------+ | id | name | cdate | sex | +----+--------+---------------------+------+ | 1 | 張三 | 2018-03-13 18:53:44 | 1 | | 3 | 李四 | 2018-03-13 18:53:44 | 1 | | 5 | Alen | 2018-03-13 17:37:34 | 1 | | 7 | Lucy | 2018-03-13 17:39:45 | 0 | +----+--------+---------------------+------+ 4 rows in set (0.00 sec)mysql> 7)表中的列數和數據文件不一樣,并且數據文件的列類型也不同時的處理; mysql> desc t_emp; +-------+--------------+------+-----+-------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+-------------------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(100) | YES | | NULL | | | cdate | datetime | YES | | CURRENT_TIMESTAMP | | | sex | int(1) | YES | | NULL | | +-------+--------------+------+-----+-------------------+----------------+ 4 rows in set (0.00 sec)mysql> system more /usr/local/mysql/mysql-files/t_emp.txt 1,"男","張三","2018-03-13 18:53:44",25 3,"男","李四","2018-03-13 18:53:44",24 5,"男","Alen","2018-03-13 17:37:34",30 7,"女","Lucy","2018-03-13 17:39:45",20 mysql> load data infile '/usr/local/mysql/mysql-files/t_emp.txt' into table t_emp-> fields terminated by ','-> enclosed by '"' (id,@tmp_sex,name,cdate,@tmp)-> set sex=if(@tmp_sex='男',1,0); Query OK, 4 rows affected (1.05 sec) Records: 4 Deleted: 0 Skipped: 0 Warnings: 0mysql> select *from t_emp; +----+--------+---------------------+------+ | id | name | cdate | sex | +----+--------+---------------------+------+ | 1 | 張三 | 2018-03-13 18:53:44 | 1 | | 3 | 李四 | 2018-03-13 18:53:44 | 1 | | 5 | Alen | 2018-03-13 17:37:34 | 1 | | 7 | Lucy | 2018-03-13 17:39:45 | 0 | +----+--------+---------------------+------+ 4 rows in set (0.00 sec)mysql>
2、MySQLImport工具 1)語法如下: mysqlimport -uroot -p [local] dbname tab.txt [option] 其中option參數可以是以下選項:
  • --fields-terminated-by=name(字段分隔符);
  • --fields-enclosed-by=name(字段引用符);
  • --fields-optionally-enclosed-by=name(字段引用符,只用在char、varchar和text等字符型字段上);
  • --fields-escaped-by=name(轉義字符);
  • --lines-terminated-by=name(記錄結束符);
  • --ignore-lines=number(忽略前幾行);
注:mysqlimport命令實際上就是LOAD DATA INFILE語句的命令行調用接口,mysqlimport導入數據要求數據文件名與表名相同,更詳細的命令可通過 mysqlimport --help查看。 2)用法和MySQLdump相同,舉例省略...



總結

以上是生活随笔為你收集整理的【MySQL】MySQL之导入和导出的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。