菜鳥轉化mysql字段數據類型

該文章主要對上次的4分鐘導入千萬級別數據之後的數據處理,上次用下面這條語句導入的千萬級別的數據後,發現所有數據的字段全爲文本類型數據,連導進去的時間也是用文本類型存儲的,操作起來不方便,對此這次將文本類型轉爲各種類型,這裏以將文本類型轉爲時間DATETIME類型爲例;

 load data infile 'D:/traffic_shenzhen.csv'into table traffic_shenzhen fields terminated by ',' optionally enclosed by '"' escaped by '"' lines terminated by '\n';

導入後的數據類型在這裏插入圖片描述

數據(全部以文本類型的數據存儲)
在這裏插入圖片描述

將dtime字段的類型轉化爲datatime類型:
注:表名:fujian3

(1)首先新建一個新的datetimel類型的字段(time):

ALTER TABLE fujian3 ADD time datetime

在這裏插入圖片描述
(2)然後將dtime字段的所有數據轉爲datetime類型的數據後存進time裏面,因爲dtime字段爲文本類型,轉完後沒法存在dtime字段下,只能存在datetime類型的time下面

update fujian3 set time=str_to_date(dtime,'%Y/%m/%d %H:%i:%s')

在這裏插入圖片描述
可以看到time已經存儲了dtime裏面的時間數據,而且time是datetime類型的數據。
(3)接下來只要把dtime字段刪除,再將time字段改爲dtime就行了。
在這裏插入圖片描述
在這裏插入圖片描述

(4)關於str_to_date(str,format)函數(mysql日期和字符相互轉換方法 )
注意:這裏有一個重點,str不能爲空白,且str的數據和format要一一對應,不然會報錯。
date_format(date,’%Y-%m-%d’) ————–>oracle中的to_char();
str_to_date(date,’%Y-%m-%d’) ————–>oracle中的to_date();

%Y:代表4位的年份
%y:代表2爲的年份

%m:代表月, 格式爲(01……12)
%c:代表月, 格式爲(1……12)

%d:代表月份中的天數,格式爲(00……31)
%e:代表月份中的天數, 格式爲(0……31)

%H:代表小時,格式爲(00……23)
%k:代表 小時,格式爲(0……23)
%h: 代表小時,格式爲(01……12)
%I: 代表小時,格式爲(01……12)
%l :代表小時,格式爲(1……12)

%i: 代表分鐘, 格式爲(00……59) 【只有這一個代表分鐘,大寫的I 不代表分鐘代表小時】

%r:代表 時間,格式爲12 小時(hh:mm:ss [AP]M)
%T:代表 時間,格式爲24 小時(hh:mm:ss)

%S:代表 秒,格式爲(00……59)
%s:代表 秒,格式爲(00……59)

例子:
select str_to_date(‘09/01/2009’,’%m/%d/%Y’)

select str_to_date(‘20140422154706’,’%Y%m%d%H%i%s’)

select str_to_date(‘2014-04-22 15:47:06’,’%Y-%m-%d %H:%i:%s’)

(5)其他文本轉其他類型的思路基本跟這個差不多,像文本類型轉int類型等,只不過轉化的函數不同。

以上部分數據來自網上數據的整理和總結,如有錯誤的地方,望指出。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章