c# - 将 CSV 加载到 SQL Server 错误

标签 c# sql-server tsql bulkinsert

我有一个像这样的 SQL Server 表

CREATE TABLE [dbo].[Service]
(
    [SID] INT IDENTITY (1, 1) NOT NULL,
    [LID]     INT NOT NULL,
    [RID]     INT NOT NULL,

    PRIMARY KEY CLUSTERED ([SID] ASC),

    CONSTRAINT [FK_dbo.Service_dbo.Location_LID] 
        FOREIGN KEY ([LID]) 
        REFERENCES [dbo].[Locations] ([LID]) ON DELETE CASCADE,
    CONSTRAINT [FK_dbo.Service_dbo.Rates_RID] 
        FOREIGN KEY ([RID]) 
        REFERENCES [dbo].[Rates] ([RID]) ON DELETE CASCADE
)

我有一个 .csv 文件,它实际上是 3 列从 1 到 100000 的升序数字

例子:

1,1,1
2,2,2
3,3,3

它一直持续到 10 万行。

我正在尝试使用此查询通过 Visual Studio 通过 T-SQL 加载此 .csv:

BULK INSERT service
FROM 'C:\service.csv'
WITH
(
    FIELDTERMINATOR = ',',
    ROWTERMINATOR = '\n'
)

我收到以下错误,我不知道为什么:

Msg 4864, Level 16, State 1, Line 1
Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 1, column 3 (RID).

最佳答案

诊断 BULK INSERT 问题的最简单方法是指定一个错误文件。错误文件将包含来自失败行的确切数据。根据 MSDN,您还将获得一个控制文件,该文件将标识每个失败的行并提供有关每个失败的详细信息。

    BULK INSERT service
    FROM 'C:\service.csv'
    WITH
    (
        FIELDTERMINATOR = ',',
        ROWTERMINATOR = '\r\n',
        ERRORFILE = 'C:\ErrorFile.txt'
    );

当您打开包含失败数据的错误文件时,请使用显示空白和不可打印字符或具有显示每个字符的字符代码的显示模式的文本编辑器。如果您有任何意想不到的字符,它们将会出现。

关于c# - 将 CSV 加载到 SQL Server 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37041240/

相关文章:

sql - 条件 where 子句 SQL Server 2012

sql - MAX 与 Top 1 - 哪个更好?

c# - 提高 Bitconverter.ToInt16 的性能

c# - 绑定(bind)在 ListView 中不起作用

sql-server - SQL 2005 发布者和 SQL 2008 订阅者之间可以进行复制吗?

sql-server - 使用内部联接的 TSQL 删除

C# 完美数练习

c# - 使用多个版本的 Visual Studio

SQL 对表值进行分类

sql-server - 为什么安装后找不到 SQL Server Management Studio?