2014-06-12 61 views
2

我想在Sybase中使用從Sybase ASE數據庫創建的bcp文件構建數據庫。在Sybase ASE(或與Sed)的bcp輸出文件中格式化datetime字段

  1. 我從Sybase創建ddl並將其轉換爲Mysql ddl。
  2. 我使用Sybase生成bcp.out文件。
  3. 當我試圖將這個bcp.out文件插入到新的Mysql數據庫中時,我遇到了datetime字段格式的問題。

我在bcp.out文件是什麼:

iker1 0 1 6 3 1 0 1 Sep 16 2011 11:20:05:950AM 
iker2 1 1 6 3 1 0 1 Jun 15 2012 11:20:05:750AM 
gdf34 0 2 6 3 1 0 1 Feb 05 2014 11:20:05:016AM 

我預計bcp.out文件是什麼:

iker1 0 1 6 3 1 0 1 2011-09-16 11:20:05.950 
iker2 1 1 6 3 1 0 1 2012-06-15 11:20:05.750 
gdf34 0 2 6 3 1 0 1 2014-02-05 11:20:05.016 

是否有/格式的任何方式配置的輸出我們在執行bcp.out文件時,Sybase Central中的日期字段是什麼?

有沒有(簡單)的方法來做到這一點(與SEED)?

+0

要做到這一點與bcp,你會使用一個視圖,並將日期時間轉換爲您希望在視圖中的格式。從那裏你可以從視野中出來。 –

+0

@MichaelGardner,是的,24小時制 –

+0

@MichaelGardner我做了一個類似於 - > create view的視圖,\t CONVERT(DATETIME,change_date,21)作爲change_date從名字中得到了相同的結果。我錯過了什麼? –

回答

2

下面是從數據庫端做的一個方法。

在您的桌子上創建一個視圖,定義您希望看到的日期轉換。在這種情況下,以下語句將以您想要的格式檢索日期。

select convert(char(10),your_date_column,23)+" "+convert(char(8),your_date_column,8)+"."+convert(char(3),datepart(ms,your_date_column)) 

因此可與創作上的表的視圖的組合:

create view my_view (col1, col2, col3, your_date_column) as 
select col1, col2, col3, convert(char(10),your_date_column,23)+" "+convert(char(8),your_date_column,8)+"."+convert(char(3),datepart(ms,your_date_column)) 
from your_table 

在這一點上,你可以使用bcp從視圖中提取數據。

bcp MyDB..my_view out my_data.out -Uusername -Ppassword -Sservername -c 
1
sed 's/@\([a-zA-Z]\{3\}\) \([^@]*[email protected]@-\)$/@\2\1/ 
    s/Jan$/01/;s/Feb$/02/;s/Jun$/06/;s/Sep$/09/;s/Dec$/12/ 
    s/@\([0-9][0-9]\) \([0-9]\{4\}\)\([^@]*[email protected]@-\)\([0-9][0-9]\)$/@\2-\4-\1\3/ 
    s/[email protected]@-/[email protected]@-/' YourFile 

解釋:

  1. 隔離月份末
  2. 變化指數的月份名稱
  3. 日期引進指數和重新格式化
  4. 去除AM/PM( sed數學不強,所以對我來說最簡單,但按照同樣的原則,可以適應小時)

本月完成二線工作。

我懷疑那個時候必須也發生了變化(僅AM小時在這裏),這SED不改變它