xml 格式文件和标识列的 bcp 导入错误

2023-12-11

我在 SQL Server 中创建了一个表,如下所示:

CREATE TABLE [dbo].[    
    [myId] [smallint] IDENTITY(1,1) NOT NULL,
    [name] [nchar](10) NOT NULL,
    [value] [int] NOT NULL,
CONSTRAINT [PK_metadado] PRIMARY KEY CLUSTERED 
(
  [myId] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]

我想使用 xml 格式化程序在表中导入文件。我遇到问题,因为我的表有“myId”。我认为这是 bcp 中的一个错误,因为如果我不添加 myId 列,则导入工作正常。

File:

Test      0010000290

Xml格式文件:

<BCPFORMAT
xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <RECORD>
    <FIELD ID="1" xsi:type="CharFixed" LENGTH="10"/>
    <FIELD ID="2" xsi:type="CharFixed" LENGTH="5"/>     
    <FIELD ID="3" xsi:type="CharFixed" LENGTH="5"/> 
</RECORD>
<ROW>
    <COLUMN SOURCE="3" NAME="value" xsi:type="SQLINT" />
    <COLUMN SOURCE="1" NAME="name" xsi:type="SQLCHAR" />
</ROW>
</BCPFORMAT>

Output:

Starting copy...
SQLState = 23000, NativeError = 515
Error = [Microsoft][SQL Server Native Client 10.0][SQL Server]Cannot insert the value NULL into column 'value', table 'XXX.dbo.metadata'; column does not allow nulls. INSERT fails.
SQLState = 01000, NativeError = 3621
Warning = [Microsoft][SQL Server Native Client 10.0][SQL Server]The statement has been      terminated.
BCP copy in failed

Editing

@马修马丁: 我的第一个格式中的“值”为空。 如果我创建这个奇怪的 xml 格式,它会起作用null column

<COLUMN SOURCE="2" NAME="null" xsi:type="SQLCHAR" />
<COLUMN SOURCE="1" NAME="name" xsi:type="SQLCHAR" />
<COLUMN SOURCE="3" NAME="value" xsi:type="SQLINT" />    

您极不可能在一个众所周知的、被广泛使用且有详尽记录的工具中发现错误。您更有可能没有找到正确的格式说明组合或犯了其他错误。

话虽如此,(对我来说)仍然不完全清楚你想要实现什么。我最好的理解是,您的文件有 3 个固定长度值,您的表有 3 列,并且您希望将文件中的 2 个值复制到表中的 2 列,这样您最终会在名称列中看到“Test”值栏中的 100?

这意味着您想要跳过文件中的最后一个值和表中的第一列。请注意这句话来自文档:

对于 XML 格式文件,您不能跳过某一列 使用 bcp 命令或 BULK 直接导入到表中 插入语句。但是,您可以导入除最后一列之外的所有列 一张桌子的。如果必须跳过除最后一列以外的任何列,则必须 创建仅包含列的目标表的视图 包含在数据文件中。然后,您可以从中批量导入数据 文件到视图中。

要使用 XML 格式文件跳过表列,请使用 OPENROWSET(BULK...),您必须提供显式的列列表 选择列表以及目标表中,如下所示:

插入...从OPENROWSET中选择(批量...)

基于所有这些背景,您可以创建一个视图并使用 bcp.exe,或者仅将 OPENROWSET() 与表一起使用,我认为这更容易:

桌子:

CREATE TABLE [dbo].metadata (
    [myId] [smallint] IDENTITY(1,1) NOT NULL,
    [name] [nchar](10) NOT NULL,
    [value] [int] NOT NULL,
    CONSTRAINT [PK_metadado] PRIMARY KEY CLUSTERED ([myId] ASC)
)

数据文件(以 Windows 换行符终止的行,即 CRLF,请参阅下面的示例 OFXML 格式文件示例):

Test      0010000290

格式文件:

<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <RECORD>
  <FIELD ID="1" xsi:type="CharFixed" LENGTH="10"/>
  <FIELD ID="2" xsi:type="CharFixed" LENGTH="5"/>
  <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\r\n"/>
 </RECORD>
 <ROW>
  <COLUMN SOURCE="1" NAME="name" xsi:type="SQLNCHAR"/>
  <COLUMN SOURCE="2" NAME="value" xsi:type="SQLINT"/>
 </ROW>
</BCPFORMAT>

命令:

insert into dbo.metadata ([name], [value])
select [name], [value]
from openrowset(bulk 'C:\SomeFolder\data.bcp',
    formatfile = 'C:\SomeFolder\format.xml'
    ) dt

最后,还有其他几个小点。请务必提及您正在使用的 SQL Server 版本:许多功能仅在特定版本中可用。您还应该检查您的列名称;我知道您可能只是将它们用作此处的快速示例,但它们的描述性并不强,并且 VALUE 是一个 ODBC保留关键字Microsoft 建议不要在 SQL Server 中使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

xml 格式文件和标识列的 bcp 导入错误 的相关文章

  • SQL Server 中的动态透视多列

    我有一张这样的桌子 Id Name FromAddress ToAddress 1 Joey ABC JKL 2 Joey DEF MNP 3 Joey GHI OQR 我正在 SQL Server 中寻找带有动态数据透视表的以下输出 Na
  • SQL Server 转换选择一列并将其转换为字符串

    是否可以编写一条从表中选择列并将结果转换为字符串的语句 理想情况下 我希望有逗号分隔的值 例如 假设 SELECT 语句看起来像这样 SELECT column FROM table WHERE column lt 10 结果是一列包含值的
  • 将多行合并为一行并根据行数附加列

    我正在尝试将同一个表的多行合并为一个 我有一个像这样的示例表 Col1 Col2 Col3 Col4 Col5 Col6 1 BH1 CB 12 CC CC Conveyor Mal 1 BH1 CB 104 ZC ZC Full Emp
  • 如何在动态查询中将行值连接到列名

    我正在开发一个允许配置问题和答案的应用程序 目前最多可以有 20 个答案 但也可能更少 我的结构如下 问题 ID FormId QuestionText AnswerField 1 1 Name Answer01 2 1 Address A
  • 为什么查询优化器完全忽略索引视图索引?

    SQL 小提琴 http sqlfiddle com 6 d4496 1 http sqlfiddle com 6 d4496 1 数据是为您的实验预先生成的 有一个明显的表格 CREATE TABLE Entity ID int Clas
  • SQL Server 中的派生表

    我有这两个疑问 我不知道如何将它们组合在一起来制作派生表 我假设使用第二个查询作为主查询 并在主查询的 FROM 子句中使用第一个查询 SELECT EmailAddress Orders OrderID SUM ItemPrice Qua
  • SqlException超时未达到

    我们的服务器有时会抛出这个众所周知的异常 超时已过 操作完成之前超时时间已过 或者服务器未响应 当服务器处理大请求时 这种情况会在压力下发生 我做了一些研究 发现我可以改变连接字符串连接超时设置和 或SqlCommand 超时数据读取器属性
  • 使用 Powershell SQL 将数据提取到 Excel

    我想使用 powershell 将数据从 SQL Server 提取到新的 excel 文件 对于小型数据集 我的代码可以工作 但某些表的行数超过 100 000 行 这将需要很长时间 我不在 SQl 服务器中使用该实用程序的原因是因为我想
  • 自动创建n列表

    我想在一行中将 236 个 int 值存储到 sql 中 现在我必须声明该表 但我不想输入 236 倍的列名 列名应该是 BYTE001 BYTE002 或其他前缀 如 BYTE B INT 可以自动生成ColumnNames吗 我尝试以下
  • 内联表值 UDF 能否优于 SELECT 列列表中的等效标量 UDF?

    这个问题源于SQLServer 为什么要避免表值用户定义函数 https stackoverflow com questions 1081057 sqlserver why avoid table valued user defined f
  • 使用 MVC5、Ajax、C# 和 MSSQL Server 级联 DropdownList

    我对来自 Windows 窗体和三层架构的 MVC 非常陌生 我试图找出使用从数据库填充的级联下拉列表 DDL 我使用 MS SQL Server 2012 VS 2013 目前我正在研究用户调查问卷 用户可以从 DDL 的多个答案中进行选
  • SSIS-从 Sharepoint 下载 Excel 并将其加载到 SQL 数据库

    我目前遇到的情况是共享点网站上有一个 Excel 文件 我需要将该 Excel 文件加载到数据库中 Excel 文件有多个工作表 我尝试过以下方法 但运气为零 方法 1 我访问 sharepoint 站点并访问 库 选项卡 并选择使用资源管
  • 使用输出在合并语句中设置变量

    我有一个合并语句应该始终更新或插入一条记录 我想记住变量中该语句的 ID 它看起来像这样 DECLARE int int MERGE dbo table AS A USING SELECT stringtomatch AS string A
  • SQL最近的命令?微软SQL

    我只是编写一个查询来查看我的客户数据库并列出他们下了多少订单等 我正在努力添加到此查询中的是只显示该电子邮件的最新 OrderID 有任何想法吗 这是我的查询 select top 1000 BuyerEMail COUNT HowMany
  • SQL Server 删除触发器 - 引用已删除行或标记为删除的行的行句柄

    我在表上有一个删除触发器 用于从另一个数据库的表中删除条目 CREATE TRIGGER dbo Trigger Contracts Delete ON dbo Contracts AFTER DELETE NOT FOR REPLICAT
  • 自定义 Sql Server 对象资源管理器右键单击菜单项

    如何在 Sql Server 2012 的对象资源管理器中添加或自定义右键菜单项 例如 我想将新项目添加到表右键菜单中以生成自定义表创建器脚本 您可以编写一个 SSMS 加载项 See http sqlblogcasts com blogs
  • 如何在 BigQuery/SQL 中将行转置为包含大量数据的列?

    我在将 BigQuery 中的大量数据表 15 亿行 从行转置为列时遇到问题 我可以弄清楚如何在硬编码时使用少量数据来完成此操作 但是对于如此大量的数据 该表的快照如下所示 CustomerID Feature Value 1 A123 3
  • 子查询在多项选择时返回超过 1 个值的 SQL 错误

    我想要一个临时表 它将使用 select 语句插入值 但每次我运行查询时 总是出现错误 子查询返回超过 1 个值 当查询跟随 gt 或子查询用作表达式时 不允许这样做 该语句已终止 0 行受影响 这很奇怪 因为代码中似乎没有错误 但如果有的
  • C# 与 INSERT 存储过程 \r\n 问题

    基本上我有一个非常简单的插入语句 INSERT INTO dbo ORDER ORDER DATE ORDER TYPE ID PAYMENT STATUS ID TOTAL COST SENDER NAME SENDER EMAIL SE
  • 将语句插入 SQL Server 数据库

    最近几天我试图找到这个错误 但没有成功 我正在尝试在数据库中插入一个新行 一切都很顺利 没有错误 也没有程序崩溃 My INSERT声明如下 INSERT INTO Polozaj Znesek Uporabnik Cas Kupec Po

随机推荐

  • SQL 中“AS”是什么意思?

    下面是概要SELECT来自 PostgreSQL文档 在我看来 有时我们会写
  • DateTime 和 ASP.NET MVC 3 模型绑定的全球化问题

    我的应用程序在 ro RO 区域性设置下运行 在 web config 全球化部分中配置 如果我发出像这样的 POST 请求 POST myapp index date 03 12 2010 value something 模型绑定将此映射
  • IE8 在 JavaScript 弹出窗口上奇怪地崩溃

    创建弹出窗口后我遇到一个奇怪的问题onclick 弹出窗口打开 但在 IE8 上立即挂起 在包括 IE6 在内的所有其他浏览器上工作正常 但在添加alert如 JavaScript 代码中所示 弹出窗口工作正常 我在用 https 并不是
  • 如何在 TypeScript 中定义 Singleton

    在 TypeScript 中为类实现单例模式的最佳和最方便的方法是什么 有或没有延迟初始化 从 TS 2 0 开始 我们有能力定义构造函数的可见性修饰符 所以现在我们可以在 TypeScript 中执行单例 就像我们习惯在其他语言中一样 给
  • 非空约束上的 Hibernate JoinColumn 错误

    这是我的课程列表 MappedSuperclass public abstract class JpaModel Id Column name ID columnDefinition serial GeneratedValue strate
  • 除了 Davg 之外还有其他求平均值的方法吗?

    我在工作中继承了这个访问数据库 我正在寻找一种更快的方法来编写一些代码 目前运行该程序大约需要 1 5 分钟 我需要它更快 目前我已将其全部设置为 DAvg 和 DCount 但问题是它基本上打开和关闭其使用的每一行的查询 就其本身而言很好
  • Weblogic Prefer 应用程序包不工作

    我使用的是Weblogic 10 3 6门户服务器 Weblogic 10 3 6始终使用weblogic附带的common fileupload jar 但我希望服务器使用我在战争中拥有的服务器 用例是我有 war1 它使用 war2 内
  • 如果类型与类型说明符不匹配,printf 如何工作?

    int main printf c n return 0 这里根据类型说明符需要一个字符 但我们正在通过它const char 我希望它会在代码块 GNU GCC 编译器中给我一条警告消息 但它没有给我任何警告并打印 特点 为什么它不发出任
  • VS2010 中的扩展管理器错误?

    当我尝试从 VS2010 Ultimate 打开扩展管理器时 出现此错误 指定的路径 文件名或两者都太长 完全限定文件名 Microsoft Visual Studio 必须少于 260 个字符 目录名必须少于 248 个字符 我之前曾使用
  • 选择列时出现 KeyError

    我试图调用一个字段并收到错误 调用该表中的任何字段都会出现相同的错误 df ret pd read csv Retention Data csv na values print df ret Cohorts Retention Rate 这
  • 如何在Python中创建第二个None?创建一个 id 始终相同的单例对象

    警告 以下问题要求提供有关不良做法和脏代码的信息 建议开发商酌情决定 注意 这与在 Python 中创建单例问题是因为我们想要解决酸洗和复制以及正常的对象创建问题 目标 我想创造一个价值 称为NoParam 模拟的行为None 具体来说 我
  • 如何使用 log4j2 记录 CXF Web 服务请求?

    我想记录所有传入和传出CXF对特定日志文件的请求 但我通过以下配置得到的只是控制台输出 这里有什么问题吗 log4j2 xml
  • 如何停用浏览器中的缓存?

    例如 如果您退出雅虎邮件 然后单击后退按钮 它不会加载最后一页 而是将您重定向到登录页面 我必须用我的 PHP 代码来完成此操作 我正在使用 CodeIgniter 有些朋友告诉我禁用缓存 但这将是一件坏事 因为我的系统中有很多图像 每次都
  • 为什么 Safari 会重复 GET 请求,而 Chrome 却不会?

    Update TL DR 这可能是 Safari 和 或 Webkit 中的错误 更长的 TL DR 在 Safari 中 使用 Fetch API 发出 GET 请求后 当页面重新加载时 Safari 会自动 无意中 重新运行该请求即使发
  • 位串最近邻搜索

    我有数十万个长度为 32 位的稀疏位串 我想对它们进行最近邻搜索 并且查找性能至关重要 我一直在阅读各种算法 但它们似乎针对文本字符串而不是二进制字符串 我认为局部敏感散列或频谱散列似乎都是不错的选择 或者我可以考虑压缩 这些中的任何一个都
  • DataGridView CellPaint 不能完全在滚动上工作

    第一次发帖 但浏览了很长时间 所以这是我的问题 基本上我有一个用于与用户交互的 datagridview 在所有行中 都有一个 信息 按钮 它会产生一种错觉 即它在其下方添加了另一行 并合并了所有单元格 整个行中的一个长单元格 并绘制了描述
  • 在python中计算矩形的质心

    我想计算矩形的质心 矩形的坐标如下 co ord 601 1006 604 1009 xmin ymin xmax ymax 有人可以指出一个简单的方法吗 谢谢 对角矩形的质心 x1 y1 and x2 y2 位于该矩形的中心 x1 x2
  • 将标头添加到 @aspnet/signalr Javascript 客户端

    我正在使用 aspnet signalr 官方 Javascript 客户端这个npm包 我想知道是否有办法将Header配置添加到客户端连接头 我如何建立联系 let connection new signalR HubConnectio
  • Scrapy xpath不提取包含特殊字符<%=的div

    我是 Scrapy 新手 我正在尝试从以下 URL 中提取 h2 文本 https www tysonprop co za agents 我有两个问题 我的 xpath 可以访问 script 元素 但无法找到 script 标记内的 h2
  • xml 格式文件和标识列的 bcp 导入错误

    我在 SQL Server 中创建了一个表 如下所示 CREATE TABLE dbo myId smallint IDENTITY 1 1 NOT NULL name nchar 10 NOT NULL value int NOT NUL