【问题标题】:BCP Error Numeric value out of range when importing multi-line file to Azure SQL Data Warehouse将多行文件导入 Azure SQL 数据仓库时,BCP 错误数值超出范围
【发布时间】:2016-03-05 17:00:12
【问题描述】:

我正在尝试使用 bcp 实用程序加载我的 Azure SQL 数据仓库,但在一个又一个问题中遇到问题...我终于得到了一个包含一条记录的 .txt 文件以成功导入,但现在当我放了两个或更多记录到文件中,它会出现错误(通过错误输出文件):

第 1 行第 5 列:数值超出范围

数据如下:

2014-06-01,11111,test,used,1
2014-06-01,22222,test,used,1

我要导入的表如下所示:

[Date] (date, not null)
[Code] (varchar(50), not null)
[Model] (varchar(100), not null)
[Type] (varchar(20), not null)
[Quantity] (int, not null)

我认为这与换行符有关,但我无法解决它。我尝试将 Notepad++ 中的编码更改为 ANSI、ISO-8859-1、UTF-8 w/o BOM,以及使用 Visual Studio CODE 的 UTF-16 LE & BE。当指定'ANSI'时,单行文件导入成功。行尾顺序设置为LF,我的bcp命令如下:

bcp Schema.Table in C:\BcpFiles\sourceData.txt -S serverName -d databaseName -U userName -P password -q -c -t "," -r/n -e C:\BcpFiles\Errors.txt

【问题讨论】:

    标签: azure azure-sql-database data-warehouse bcp azure-sqldw


    【解决方案1】:

    -r 参数需要反斜杠而不是正斜杠:尝试使用 -r \n 代替。本文解释了各种组合:https://msdn.microsoft.com/en-gb/library/ms191485.aspx

    更新:

    create table tst (
    [Date] date not null,
    [Code] varchar(50) not null,
    [Model] varchar(100) not null,
    [Type] varchar(20) not null,
    [Quantity] int not null
    )
    

    然后使用这个:

    bcp dbo.tst in so.txt -S TONYMSI -d AdventureWorks2012 -T -q -c -t "," -r \n

    工作正常。

    【讨论】:

    • 感谢您的回复。然而,这并没有为我解决。它仍然适用于一条记录,但是当我添加换行符 (LF) 时,错误是:“强制转换规范的字符值无效”并且仍然指向第 5 列(数字 1 被插入到 INT 列中)。
    • 你能看一下我的答案的更新吗 - 对我来说很好。这就引出了一个问题——你能否编写出你试图 BCP 进入的表,即 -d 指定的数据库中的表,还请注意 -r 和 \n 之间有一个空格
    • Azure SQL 数据仓库仅支持使用 UTF-8 的 BCP。在您重新尝试时,该文件是 UTF-8 格式的吗?
    猜你喜欢
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    相关资源
    最近更新 更多