导入CSV文件导入到SQL Server 2008中
问题描述:
基本上,我想导入数百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?
答
它工作得很好,在我的情况,当我刚刚变化的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
你看过SSIS吗? – Oded 2012-02-27 13:43:17
尚未,谢谢,我只是Sql初学者... – 2012-02-27 13:53:50
SSIS不是SQL。我建议搜索这个术语并学习这个SQL Server特性。 – Oded 2012-02-27 13:54:39