日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

作者介紹

農行研發中心“數風云”團隊,一支朝氣蓬勃、快速成長的技術團隊,始終致力于農行大數據、數據庫和云計算等領域的應用實踐與技術創新,探索數據賦能,勇攀數據云巔,為企業數字化轉型和金融科技發展不斷貢獻力量。

 

背景介紹

 

筆者在工作中曾遇到SyBase數據庫遷移至MySQL時的一個問題:使用bcp將SyBase中的數據導出為csv文件時,datetime數據類型默認導出格式與MySQL不兼容。Sybase默認的datetime類型格式為Mmm dd yyyy hh:nn:ss:sssAA,示例如下:

 

Dec 24 2017 12:00:00:000PM

 

而MySQL中datetime類型格式為yyyy-mm-dd hh:nn:ss,示例如下:

 

2017-12-24 12:00:00

 

因此直接將csv文件導入MySQL會由于不兼容導致報錯。

 

解決方式

 

解決此問題的方式不外乎兩種:一是修改導出后的csv文件,令其時間字段的數據格式兼容MySQL;二是修改SyBase數據庫中時間字段的數據格式,使其直接能通過bcp導出兼容MySQL的csv文件。鑒于第一種方法較為復雜,本文筆者采用第二種方法解決該問題。

 

1、convert()函數介紹

 

convert()函數是SyBase數據庫中用于數據類型轉換的函數,其使用方式如下:

 

convert(datatype,expression,[format-style])

 

  • datatype:必選參數,將要轉換成的數據類型;
  • expression:必選參數,待轉換的字段;
  • format-style:可選參數,轉換時間類型時,決定輸出格式的參數,對應關系見下表:

 

format-style的值

輸出格式

輸出示例

100

Mmm dd yyyy hh:nnAA

Dec 24 2017 12:00PM

101

mm/dd/yyyy

12/24/2017

102

yyyy.mm.dd

2017.12.24

103

dd/mm/yyyy

24/12/2017

104

dd.mm.yyyy

24.12.2017

105

dd-mm-yyyy

24-12-2017

106

dd Mmm yyyy

24 Dec 2017

107

Mmm dd,yyyy

Dec 24,2017

108

hh:nn:ss

12:00:00

109

Mmm dd yyyy hh:nn:ss:sssAA

Dec 24 2017 12:00:00:000PM

110

mm-dd-yyyy

12-24-2017

111

yyyy/mm/dd

2017/12/24

112

yyyymmdd

20171224

 

例如有一個名為test的表,將該表中一個名為changetime,類型為datetime的字段轉換為varchar類型,可以使用如下SQL語句:

 

select convert(varchar(100),changetime,111) as dates from test;

 

若該字段僅有一行數據,其值為Dec 24 2017 12:00:00:000PM,那么以上SQL輸出的結果為2017/12/24.

 

2、str_replace()函數介紹

 

str_replace()參數用于替換字符串中的部分字符,其使用方式如下:

 

str_replace(‘string1’,’string2’,’string3’)

 

參數含義:

  • string1:必選參數,原始字符串;
  • string2:必選參數,待轉換的字符;
  • string3:必選參數,需要轉換成的字符;

 

例如以下SQL:

 

select str_replace(‘2017/12/24’,’/’,’-’);

 

其輸出結果為2017-12-24.

 

3、具體方案實施

 

由以上示例可見,若將SyBase中datetime類型字段使用convert()函數轉換為varchar類型,format-style的值指定為111,再使用str_replace()函數,將convert()轉換來的字符串中的’/’轉換為’-’,即可滿足MySQL中對datetime類型的格式要求(yyyy-mm-dd);同理,format-style的值指定為108,即可滿足hh:nn:ss的格式要求。具體的實施方案舉例說明如下:

 

1)在SyBase數據庫建立一張臨時表tmp,表結構與待導出數據的表test一致,僅datetime類型字段改為varchar類型;表結構見以下SQL語句:

 

create table test(id int,time datetime);

create table tmp(id int,time varchar(100));

 

2)采用如下SQL語句將原始表的數據存入臨時表中:

 

insert into tmp select id,str_replace(convert(varchar(100),time,111),'/','-')

+' '+convert(varchar(100),time,108) from test;

 

3)將臨時表tmp中的數據使用bcp命令導出為csv文件;

 

4)將csv文件中的數據導入MySQL數據庫對應表中。

 

至此,解決了SyBase中datetime類型字段默認導出格式與MySQL不兼容的問題。

 

關注公眾號【dbaplus社群】,獲取更多原創技術文章和精選工具下載

分享到:
標簽:字段 時間
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定