2012-02-27 153 views
1

基本上,我想導入數百CSV文件導入到SQL Server 2008中導入CSV文件導入到SQL Server 2008中

文件格式如下:

<Ticker>,<DTYYYYMMDD>,<Open>,<High>,<Low>,<Close>,<Volume> 
AAM,20120110,21.6,22.8,21.4,21.6,3510 
AAM,20120109,22.2,22.9,22.0,22.2,1130 
AAM,20120105,0.0,23.0,22.2,22.2,210 

我想:

BULK 
INSERT BBB 
FROM 'D:\FIFA\excel_aam.csv' 
WITH 
(
FIRSTROW = 2, 
FIELDTERMINATOR = ',', 
ROWTERMINATOR = '/n' 
) 
GO 

但它沒有工作。所以我在想導入CSV文件varchar格式,然後更改每列以正確的數據類型後,像這樣:

CREATE TABLE BBB (
TICKER VARCHAR(15)NULL, 
INDEXDATE VARCHAR(15) PRIMARY KEY, 
OPENPRICE VARCHAR(15) NULL, 
HIGHPRICE VARCHAR(15) NULL, 
LOWPRICE VARCHAR(15) NULL, 
CLOSEPRICE VARCHAR(15) NOT NULL, 
VOLUME VARCHAR(15)) 
GO 

,但它給我的錯誤:

消息4863,級別16 ,狀態1行1
第1行第7列(VOLUME)的批量加載數據轉換錯誤(截斷)。

那麼,我該如何將這些文件(很多文件,我無法使用導入和導出嚮導)正確導入SQL Server?

+0

你看過SSIS嗎? – Oded 2012-02-27 13:43:17

+0

尚未,謝謝,我只是Sql初學者... – 2012-02-27 13:53:50

+1

SSIS不是SQL。我建議搜索這個術語並學習這個SQL Server特性。 – Oded 2012-02-27 13:54:39

回答

0

對於進口如此多的文件聽起來像是日子會把你需要SSIS

0

它工作得很好,在我的情況,當我剛剛變化的ROWTERMINATOR到\n/n

--CREATE TABLE BBB (
--TICKER VARCHAR(15)NULL, 
--INDEXDATE DATETIME, 
--OPENPRICE DECIMAL(12,4), 
--HIGHPRICE DECIMAL(12,4), 
--LOWPRICE DECIMAL(12,4), 
--CLOSEPRICE DECIMAL(12,4), 
--VOLUME DECIMAL(20,4)) 
--GO 

BULK INSERT BBB 
FROM 'D:\FIFA\excel_aam.csv' 
WITH 
(
    FIRSTROW = 2, 
    FIELDTERMINATOR = ',', 
    ROWTERMINATOR = '\n' 
) 
GO 

(3 row(s) affected) 

我現在有BBB表中的行....

+0

奇怪的是,當我用這個代碼與「原始」文件,它總是0行受到影響,但是當我刪除最後一行時,它是成功的,我試着用一些文件和相同的錯誤。 – 2012-02-27 15:23:54