Mysql select into outfile NULL值导出的处理方法
目錄
1簡介... 1
2 準備... 1
2.1 環境說明... 1
3 安裝... 2
4 配置... 2
5 使用... 2
5.1 驗證實驗... 2
5.2 問題分析... 4
6 延展... 4
7 總結... 4
Mysql select into outfile NULL值導出的處理方法
1簡介
基于mysql select into outfile的方式導出文本文件的處理方法,這里主要針對里面NULL的處理。
2?準備
2.1?環境說明
1 mysql版本10.3.13-MariaDB,同理其它mysql版本效果類似。
-- 查看mysql版本 SELECT VERSION() AS mysql_Version;| mysql_Version |
| 10.3.13-MariaDB |
| Variable_name | Value |
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | E:\Program Files\MariaDB 10.3\share\charsets\ |
3 安裝
無.
4?配置
無
5?使用
5.1?驗證實驗
1) mysql里創建一個demo表定義id和長度為6的name字段,插入有NULL值的數據驗證
CREATE TABLE demo(id int,name varchar(6),PRIMARY KEY (id)) DEFAULT CHARSET=utf8;注:
[client]
default-character-set=utf8
INSERT INTO demo VALUES(10,'中國'); INSERT INTO demo VALUES(11,'中國安徽合肥'); INSERT INTO demo VALUES(13,'abcdef'); INSERT INTO demo VALUES(14,NULL); -- 查看數據 SELECT * FROM demo;| id | name |
| 10 | 中國 |
| 11 | 中國安徽合肥 |
| 13 | abcdef |
| 14 |
? ??
2) 通過mysql select outfile的方式導出數據
SELECT id,name into outfile "D:\\temp\\demo.txt"? fields terminated by "\t" lines terminated by '\r\n' from demo;| id | name |
| 10 | 中國 |
| 11 | 中國安徽合肥 |
| 13 | abcdef |
| 14 | \N |
3) 通過mysql select outfile 配合ESCAPED BY ''導出數據
SELECT id,name into outfile "D:\\temp\\demo1.txt"? fields terminated by "\t" ESCAPED BY '' lines terminated by '\r\n'? from demo;| id | name |
| 10 | 中國 |
| 11 | 中國安徽合肥 |
| 13 | abcdef |
| 14 | NULL |
注: 這里的NULL是字符串,如果導入其它數據庫需要加相關參數對NULL進行轉義。
3) 通過mysql select outfile 配合IFNULL導出數據
SELECT id,IFNULL(name,'') name into outfile "D:\\temp\\demo2.txt"? fields terminated by "\t" lines terminated by '\r\n'? from demo;| id | name |
| 10 | 中國 |
| 11 | 中國安徽合肥 |
| 13 | abcdef |
| 14 |
綜上所述建議采用第三種方式:將字段里可能為空的字段加IFNULL的轉換后再導入其它數據庫,如果只是mysql數據庫間的轉換則不需要這么轉換。
5.2?問題分析
無
6?延展
--拼接IFNULL 結合SELECT outfile 的示例。
-- 這里對COLUMN_NAME里定義為DESC、DEFAULT等SQL關鍵字的情況,需要加`COLUMN_NAME`轉義 SELECT TABLE_NAME, concat('SELECT ', group_concat(fin order by IS_NULLABLE separator ',') ,' into outfile "D:/temp/demo5.txt"? fields terminated by "\\t" lines terminated by \'\\r\\n\'? from ',TABLE_NAME,';') concat_str FROM(SELECT TABLE_NAME,COLUMN_NAME,IS_NULLABLE,CASE WHEN IS_NULLABLE='NO' THENgroup_concat(COLUMN_NAME order by ORDINAL_POSITION separator ',')WHEN IS_NULLABLE='YES' THENgroup_concat(CONCAT('IFNULL(',COLUMN_NAME,',\'\')') order by ORDINAL_POSITION separator ',')END finFROM information_schema.COLUMNSWHERE TABLE_SCHEMA='test'AND TABLE_NAME='demo'GROUP BY TABLE_NAME,IS_NULLABLE)AGROUP BY TABLE_NAME| concat_str |
| SELECT id,IFNULL(name,'') into outfile "D:/temp/demo5.txt"? fields terminated by "\t" lines terminated by '\r\n'? from demo; |
7?總結
暫無.有問題可以咨詢如下:
總結
以上是生活随笔為你收集整理的Mysql select into outfile NULL值导出的处理方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mysql UTF8 varchar与O
- 下一篇: 东风商用车24小时服务热线?