2012-01-18 491 views
2

我想從我的Visual Studio項目中的文本文件導入一些數據到SQL數據庫。除日期列外,所有列都已正確導入。我用下面的命令來導入數據:從txt文件導入數據到SQL數據庫

BULK INSERT T2 FROM 'c:\Temp\Data.txt' WITH (FIELDTERMINATOR = ',') 

在文本文件中,我有日期像12年2月2日,12年3月2日等,但在數據庫中,所有的行已經設置爲01/01/1900。我認爲這可能是因爲日期格式與SQL數據庫相比文本文件中的日期格式不同,有誰知道我可以如何將日期導入到數據庫中?

謝謝

+0

BULK INSERT對日期相當挑剔,如果將日期格式更改爲mm/dd/yyyy(使用/而不是 - 如果分隔日期部分),會發生什麼情況?這應該可行,但更新數據文件有多可行? – Sparky 2012-01-18 21:54:11

+0

@Sparky數據在一個文本文件中,我將不得不手動更改超過2000行:-( – Blob 2012-01-18 22:02:21

+0

好吧,您有csv數據...在Excel中以csv文件形式打開它,然後以格式格式化日期您需要... – maneesha 2012-01-18 22:29:26

回答

1

我遇到了同樣的問題,使用你的例子在2008r2。 沒有錯誤,但全部設置爲1900-01-01。 看起來這是bcp中的一個怪癖,用於填充DATE字段。 它的行爲這樣只爲DATE列類型

所以如果你使用Date類型,將其更改爲datetime或smalldatetime(包括工作對我來說),看看是否有幫助。 記得設置dateformat,以便正確閱讀日期,月份和年份。 如果是(文本文件)日 - 月 - 年應該是:

set dateformat dmy 
BULK INSERT T2 FROM 'c:\Temp\Data.txt' WITH (FIELDTERMINATOR = ',') 

我能找到它的一個報告,但沒有明確的答案,爲什麼出現這種情況: similar case reported here

+0

發現它作爲MS數據庫中的活動錯誤:[鏈接](https://connect.microsoft.com/SQLServer/feedback/details/526074/owner) – wmz 2012-01-19 00:25:17

+0

該命令工作完美,但現在我想知道,如何我告訴SQL錯過一列導入?例如,我有6列數據用逗號分隔,我怎麼只導入1,2,4和5列? – Blob 2012-02-27 09:59:59

+0

@ user1091114您將不得不使用格式文件。鏈接](http://msdn.microsoft.com/en-us/library/ms187908。 ASPX) – wmz 2012-02-27 12:37:32

相關問題