【问题标题】:Dot in Column name not supported while creating TDE Marklogic创建 TDE Marklogic 时不支持列名中的点
【发布时间】:2018-09-14 06:18:37
【问题描述】:

我们正在将 csv 数据导入 marklogic。某些列的名称中有一个点 (.)。它正在被很好地加载到 MarkLogic(连同点)。

但是,当我们创建 TDE 模板以创建视图时,点不被接受。向我抛出以下错误:

[1.0-ml] TDE-INVALIDTEMPLATE: (err:FOER0000) Invalid TDE template: TDE-INVALIDSQLNAMENODE: Invalid SQL object name: "DataType." for /tde:template/tde:rows/tde:row/tde:columns/tde:column[3]/tde:name

我可以用下划线替换点,但正在寻找任何替代建议。

【问题讨论】:

    标签: marklogic


    【解决方案1】:

    在 tde.xsd 中,名称是这样定义的:

    <xs:simpleType name="name">
        <xs:annotation>
            <xs:documentation>
                A generic name type.
            </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:NCName">
            <xs:minLength value="1"/>
            <xs:pattern value="[^.\-\p{Z}]+"/>
        </xs:restriction>
    </xs:simpleType>
    

    意思是,列名中不允许出现点。 您可以在 Config/tde.xsd 的 MarkLogic 安装目录中找到 xsd。

    我建议将点替换为下划线或使用 camelCase 作为列名。

    【讨论】:

    • 谢谢。这有帮助。我想知道当它被允许作为 xml 元素时,为什么它会受到这种限制。我应该把它作为一个错误提出来吗?
    • 我会说它们应该支持点,因为您也可以在 sql 中使用它们。所以是的,提出一个错误/功能请求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-24
    • 1970-01-01
    相关资源
    最近更新 更多