【问题标题】:Bulk insert gives 0 rows affected批量插入影响 0 行
【发布时间】:2022-01-17 14:16:22
【问题描述】:

以下 SQL 语句返回“0 行受影响”。

更新表已创建,批量插入执行时没有错误。我要导入的文件是;,与第一行的标题分开。每行都换行。

我尝试了一些更改,但我不断收到相同的消息:

CREATE TABLE DW2.dbo.UPD_TANKINGEN_XXX 
(
    datum NVARCHAR(50),
    tijd NVARCHAR(50),
    kaart NVARCHAR(50),
    kenteken NVARCHAR(50),
    chauffeur NVARCHAR(50),
    bon NVARCHAR(50),
    km_st NVARCHAR(50),
    stationsnaam NVARCHAR(50),
    productnaam NVARCHAR(50),
    volume NVARCHAR(50),
    netto_bedrag_excl_btw NVARCHAR(50),
    factuurnr NVARCHAR(50),
    Debiteurnummer NVARCHAR(50)
)
GO

BULK INSERT DW2.dbo.UPD_TANKINGEN_XXX
FROM 'K:\_DWH\_DW2\Tankdata\XXX.csv' 
WITH (FIRSTROW=2, FIELDTERMINATOR=';', ROWTERMINATOR='\n\r', keepnulls)
GO

【问题讨论】:

    标签: sql sql-server-2008 bulkinsert


    【解决方案1】:

    问题通常是默认不支持UTF-8。您可以尝试将其转换为 UTF-16 (Unicode)。

    您可以为此使用命令行实用程序,或者只打开Notepad++ > EOL conversion in Edit > 选择Windows Format

    【讨论】:

    • 感谢您的回复!我已经在 Notepad++ 中检查了您的路径,但 Windows 格式显示为灰色。我已经检查过,该文件当前编码为 ANSI。我还注意到每一行都以 double 结尾; ,这也会导致问题吗?
    • 其实问题是EOL,windows格式的eol以\r\n结尾。您也可以尝试使用Visual studio code 文件>高级保存选项
    • 再次感谢您的宝贵回复!我已将 Rowterminator 更改为 `\r\n 并将编码更改为 UTF-16 BE BOM,然后更改为 UTF-16 LE BOM(使用 Notepad++。在这两种情况下,SQL 都会给出以下错误消息:批量加载:DataFileType 指定错误为 char。DataFileType 将被假定为 widechar,因为数据文件具有 Unicode 签名。将编码更改回 ANCI 删除了上述错误消息并使 0 行受影响的消息返回。
    • 您无法在不更改 EOL 的情况下更改 row terminator。尝试VS code advanced save options 或使用 excel 打开 CSV 文件并保存。这会将其转换为 windows 格式
    • 谢谢,已经解决了bij将数据文件格式改为.txt的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-30
    • 2022-01-03
    • 1970-01-01
    • 2020-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多