2012-04-04 47 views
0

我只是似乎沒有得到解決我的問題!我需要將其導入到SQL Server中。創建一個SQL表導入(並轉換).CSV包含MySQL tstamp

.CSV MySQL導出的第二列(以及更多)包含我需要轉換的tstamp字段。 我創建了表格,但批量導入不起作用。得到以下錯誤信息 Msg 4864,Level 16,State 1,Line 4 行2列1(tstamp)的批量加載數據轉換錯誤(類型不匹配或指定代碼頁的字符無效)。 消息4864,級別16,狀態1,行4 第3行第1列(tstamp)的批量加載數據轉換錯誤(指定代碼頁的類型不匹配或無效字符)。

這裏的代碼。

-- Recreate the table 
CREATE TABLE [Majestic].[dbo].hdiyouth 
(tstamp datetime NOT NULL 
) 
GO 

-- Bulk insert the data from csv file 
-- Ensure the file(s) is/are closed! 
BULK 
INSERT [Majestic].[dbo].hdiyouth 
FROM 'C:\Path\CSV\hdiyouth.csv' 
WITH 
(
FIRSTROW = 2, 
FIELDTERMINATOR = ';', 
ROWTERMINATOR = '\n' 
) 
GO 
+0

CSV數據的示例? – 2012-04-04 08:57:00

+0

。由此樣品 > ID; 「TSTAMP」; 「tstamp_updated」; 「REG_ID」 > 24173; 「0」, 「0」, 「1272167 > 24175;」 1319210236 「」 0 「」 1272167" > 24177;「0」;「0」;「1272173」 > 24179;「1319210739」;「0」;「1272173」; > 24181;「0」;「0」;「1272175」; – hermanvn 2012-04-04 09:07:25

+0

我相信datetime接受日期和時間在「YYYY-MM-DD HH:MM:SS」格式中,嘗試聲明tstamp字段是一個整數或時間戳 – 2012-04-04 09:17:17

回答

0

嘗試檢查出LOAD DATA:在插入之前http://dev.mysql.com/doc/refman/5.1/en/load-data.html

有點那裏是如何將列轉換的例子:

mysql> LOAD DATA INFILE '/tmp/bit_test.txt' 
    -> INTO TABLE bit_test (@var1) SET b= CAST(@var1 AS UNSIGNED); 
+0

嗨, 我不認爲我提到過它,但我想將它導入到SQL中。 – hermanvn 2012-04-04 09:15:31

0

如何創建一個SSIS包做?

link可以幫助你

+0

這是SQL 2005的免費版本嗎?也許在2008年的免費版本? 我在想BIDS模塊只能在完整版本中使用? – hermanvn 2012-04-04 10:20:27

+0

如果您已安裝SQL 2005快速版並希望安裝BIDS(商業智能開發工作室),請轉至此處http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=19413 – Diego 2012-04-04 10:22:44

+0

謝謝,我會放手一搏! – hermanvn 2012-04-04 10:33:13

0

的問題是,你有在TSTAMP和tstamp_updated列中的值「0」,這是數據類型時間戳的,對不對?

MySQL支持timestamp列中的NULL值,也表示爲'0000-00-00 00:00:00'。 SQL Server不支持這一點。不要誤解我的意思,它支持timestamp列中的NULL值,但不支持MySQL的'0'。解決這個問題的最簡單方法可能是使用SSIS,如迭戈建議。我個人通過將MySQL NULL值轉換爲'1970-01-01'來解決這個問題,這是時間戳列的最小值。