【问题标题】:Cannot Find either column or aggregate, or name is ambiguous找不到列或聚合,或者名称不明确
【发布时间】:2016-05-25 15:28:48
【问题描述】:

我正在尝试将 XML 表导入 SQL 表。我在 SQL Server 数据库中创建了一个基本表,但出现错误:

找不到列“var1”或用户定义的函数或聚合“var1.value”,或者名称不明确。

代码:

declare @xmldata as xml

set @xmldata = (SELECT CONVERT(XML, BulkColumn)AS Bulkcolumn
                FROM OPENROWSET (BULK '<filename>.xml', SINGLE_BLOB) as X)

INSERT INTO table1(var1, var2, var3)
    SELECT
        var1 = var1.value('var1', 'int'),
        var2 = var2.value('var2', 'int'),
        var3 = var3.value('var3', 'int')

我一定是哪里出了问题,特别是当我尝试将它导入 SQL Server 表时。

【问题讨论】:

  • 这部分是做什么的? var1.value('var1', 'int') - 你像调用函数一样调用它。
  • 插入部分我不完全确定,但我的目标是将 XML 文件放入 sql 表中。我在这个网站上环顾四周,这是我对如何做到这一点的理解。根据我的逻辑,var 部分可能会将值插入到 sql 表中?
  • 看看我的回答。我认为第三个查询是您想要的。
  • 你好唐纳德。您正在将 XML 从文件中读取到变量 @xmldata 中。如果您尝试SELECT @xmldata;,您将看到结果(单击它)。请发布此结果以帮助您。目前你正在阅读你的 XML,但之后你没有做任何事情......
  • 嘿Shnugo,很遗憾,由于文件中填充了个人信息,我无法向您显示太多详细信息,但是通过使用select语句,我很少看到xml文件。

标签: sql xml sql-server-2005


【解决方案1】:

我不确定 var1.value 应该做什么,甚至编译器也很困惑。

除了您的插入没问题之外,只需将我对 value1、value2 和 value3 的内容更改为您想要在这些列中使用的值。如果 var1、var2 或 var3 的数据类型是数字,则可以删除单引号。任何其他数据类型都应该用单引号括起来。

INSERT INTO table1(var1, var2, var3)
    SELECT
        var1 = 'value1',
        var2 = 'value2',
        var3 = 'value3'

不过,我通常是这样写插入的。

INSERT INTO table1(var1, var2, var3)
    SELECT
        'value1' AS 'var1',
        'value2' AS 'var2',
        'value3' AS 'var3'

如果您希望在表格的列中包含该 xml 数据,请尝试此操作。您将需要一个名为table1 的表,其中至少有一个名为XMLString 的列作为数据类型nvarchar(max)

INSERT INTO table1(XMLString)
        SELECT
            @xmldata AS 'XMLString'

【讨论】:

  • 我想插入有很多记录的整列。我该怎么做?
  • 您的 XML 数据是否来自多个文件?如果可以,可以合并成一个文件吗?
  • 它来自 1 个文件,但我收到一个编译错误,指出 var1 是无效的列名。
  • 您的表中有 var1、var2 和 var3 列名吗?您对这三列的意图是什么? xml 数据是否只进入 var1 列?
  • var1、var 2 和 var 3 是我的列名,我想将对应于每个 var1、2 和 3 的值放入每个相应的列中
猜你喜欢
  • 2011-07-13
  • 1970-01-01
  • 2015-05-26
  • 2020-12-07
  • 2014-01-06
  • 2019-08-01
  • 2011-01-06
  • 2019-02-09
  • 1970-01-01
相关资源
最近更新 更多