将CSV文件导入SQL Server 2008

时间:2012-02-27 13:41:55

标签: sql-server

基本上,我想将数百个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

但它给了我错误:

  

Msg 4863,Level 16,State 1,Line 1
  第1行第7列(VOLUME)的批量加载数据转换错误(截断)。

那么,我怎样才能将这些文件(这么多我无法使用导入和导出向导的文件)导入SQL Server呢?

2 个答案:

答案 0 :(得分:0)

为了导入这么多文件听起来像你需要SSIS

答案 1 :(得分:0)

我只是更改的行终止符改为\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表中有行....