【问题标题】:Import CSV files into SQL Server 2008将 CSV 文件导入 SQL Server 2008
【发布时间】:2012-02-27 13:41:54
【问题描述】:

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

【问题讨论】:

  • 还没有,谢谢,我只是 Sql 初学者...
  • SSIS 不是 SQL。我建议搜索该术语并了解此 SQL Server 功能。

标签: sql-server


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    当我将行终止符更改\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 行受到影响,但是当我删除最后一行时,它是成功的,我尝试了一些文件和相同的错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    • 2013-02-20
    • 2011-04-01
    相关资源
    最近更新 更多