Sql 在BCP中遇到意外的EOF
正在尝试将数据导入Azure。 在ManagementStudio 2005中创建了一个文本文件。 我尝试了逗号和制表符分隔的文本文件 BCP IN-c-t,-r\n-U-S-p 我在BCP数据文件中遇到错误{SQL Server Native Client 11.0]意外EOF 以下是我用来创建文件的脚本:Sql 在BCP中遇到意外的EOF,sql,azure,bcp,Sql,Azure,Bcp,正在尝试将数据导入Azure。 在ManagementStudio 2005中创建了一个文本文件。 我尝试了逗号和制表符分隔的文本文件 BCP IN-c-t,-r\n-U-S-p 我在BCP数据文件中遇到错误{SQL Server Native Client 11.0]意外EOF 以下是我用来创建文件的脚本: SELECT top 10 [Id] ,[RecordId] ,[PracticeId] ,[MonthEndId] ,ISNULL(C
SELECT top 10 [Id]
,[RecordId]
,[PracticeId]
,[MonthEndId]
,ISNULL(CAST(InvoiceItemId AS VARCHAR(50)),'') AS InvoiceItemId
,[Date]
,[Number]
,[RecordTypeId]
,[LedgerTypeId]
,[TargetLedgerTypeId]
,ISNULL(CAST(Tax1Id as varchar(50)),'')AS Tax1Id
,[Tax1Exempt]
,[Tax1Total]
,[Tax1Exemption]
,ISNULL(CAST([Tax2Id] AS VARCHAR(50)),'') AS Tax2Id
,[Tax2Exempt]
,[Tax2Total]
,[Tax2Exemption]
,[TotalTaxable]
,[TotalTax]
,[TotalWithTax]
,[Unassigned]
,ISNULL(CAST([ReversingTypeId] AS VARCHAR(50)),'') AS ReversingTypeId
,[IncludeAccrualDoctor]
,12 AS InstanceId
FROM <table>
实际上有几十万条实际记录,我是从不同的服务器上完成的,唯一的区别是management studio的版本。“意外的EOF”通常意味着列或行终止符不是您所期望的
也就是说,这些命令行参数与文件匹配
典型原因:
- Unix与Windows行结束符
- 包含列分隔符的文本数据(实际数据中的逗号)
- 或者两者的混合
SSM应该与此无关:它是格式(预期与实际)这很重要如果文件是以制表符分隔的,那么列分隔符的命令行标志应该是
-t\t
-t,
仅供参考,我遇到了同样的错误,结果是我的目标表比DAT文件多了一列!我想我们大多数人都更喜欢真实的示例语法提示,下面是我所做的:
C:\temp\test.txt-S 123.66.108.207-U testuser-p testpass-C-r/r中的bcp LoadDB.dbo.test
我的数据是从基于Unix的Oracle数据库中提取的,该数据库以制表符分隔,并具有LF行尾字符
因为我的数据是以制表符分隔的,所以我没有指定-t参数,bcp的默认值是tab
因为我的行终止符是换行符(LF),所以我使用了-r/r
因为我的数据都加载到了char字段中,所以我在遇到此错误时都使用了-c参数,结果是表中的列数与文本文件中分隔的列数不匹配。确认这一点的简单方法是将文本文件加载到excel并与e列计数为表的计数。我将分享我在这个问题上的经验。我的用户向我发送UTF-8编码,一切正常。当他们将编码更新为UCS-2 LE BOM中的编码时,我的加载开始失败。请使用记事本++检查这些设置 恢复到UTF-8修复了我的问题 这帮助我解决了我的问题
在EXCEL中打开CSV文件并“另存为”新的CSV文件
我在尝试将记录从数据文件bcp到表时遇到了相同的错误。解决方法是在记事本++或类似编辑器中打开文件,并在文件末尾添加额外的行。这适用于我的大小写-字段分隔符-| ^ |,行分隔符-新行(LRCF)
使用的命令:bcp in-T-c-T“| ^”在我的例子中,问题是我试图导入的记录有一个无效的外键我用记事本++打开了它,行终止符是CRLF。我找不到嵌入的逗号,但当我用制表符分隔它时,得到了相同的错误。@alemus:您的命令行有
-r\n
,它是LF。可能是CRI是不是应该是-t“\t”
?就像我做的-s“ServerName”-U“UserName”
?另外,什么是-t,
?不,不要使用引号,-t
是字段终止符的缩写,我想实际上选项卡
分隔值是bcp
的默认值,所以你根本不必指定任何-t
和-r
。这就是我自己经历的。我发现我需要添加一个placeho导入文件中“我的ID”列值的文件夹,即使它是自动生成的索引列。似乎需要该占位符。它有助于解决此问题。谢谢
CREATE TABLE [WS].[ARFinancialRecord](
[Id] [uniqueidentifier] NOT NULL,
[RecordId] [uniqueidentifier] NOT NULL,
[PracticeId] [uniqueidentifier] NOT NULL,
[MonthEndId] [uniqueidentifier] NOT NULL,
[InvoiceItemId] [uniqueidentifier] NULL,
[Date] [smalldatetime] NOT NULL,
[Number] [varchar](17) NOT NULL,
[RecordTypeId] [tinyint] NOT NULL,
[LedgerTypeId] [tinyint] NOT NULL,
[TargetLedgerTypeId] [tinyint] NOT NULL,
[Tax1Id] [uniqueidentifier] NULL,
[Tax1Exempt] [bit] NOT NULL,
[Tax1Total] [decimal](30, 8) NOT NULL,
[Tax1Exemption] [decimal](30, 8) NOT NULL,
[Tax2Id] [uniqueidentifier] NULL,
[Tax2Exempt] [bit] NOT NULL,
[Tax2Total] [decimal](30, 8) NOT NULL,
[Tax2Exemption] [decimal](30, 8) NOT NULL,
[TotalTaxable] [decimal](30, 8) NOT NULL,
[TotalTax] [decimal](30, 8) NOT NULL,
[TotalWithTax] [decimal](30, 8) NOT NULL,
[Unassigned] [decimal](30, 8) NOT NULL,
[ReversingTypeId] [tinyint] NULL,
[IncludeAccrualDoctor] [bit] NOT NULL,
[InstanceId] [tinyint] NOT NULL,
CONSTRAINT [PK_ARFinancialRecord] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
)