gpt4 book ai didi

sql - SSIS - 文本限定符目的

转载 作者:行者123 更新时间:2023-12-02 04:42:30 29 4
gpt4 key购买 nike

向 SSIS 平面文本文件输出添加文本限定符的目的是什么?

我正在从 SQL 数据库中提取数据,该数据库在数据中包含引号/逗号/管道/和许多其他常见分隔符。

列中数据点的极端示例:

"Johnson"|Smith,Jones

我将导出设置为以逗号分隔,并带有双引号 "文本限定符。我假设它会像这样导出数据,而且确实如此:

,""Johnson"|Smith,Jones",

现在我正在测试重新导入数据,以逗号分隔,并使用双引号文本限定符。我收到错误消息,提示 SSIS 找不到分隔符。我认为它会识别组合逗号和双引号,本质上是一个更复杂的分隔符。

如果在输出中添加文本分隔符无法解决实际数据中包含字符的问题,那么它有什么作用?

假设接收数据的人可能使用 Excel 等工具来处理数据,但该工具似乎无法处理像 |"这样的复杂多字符分隔符,这是解决此问题的最佳方法,即删除最我的数据中的公共(public)分隔符,并使用它作为分隔符?在我的情况下可能是管道,而不是逗号。

最佳答案

如果行单元格中包含分隔符,则使用文本限定符。通常,文本限定符是双引号。如果单元格包含分隔符并且未使用文本限定符,则分隔符之后出现的数据将溢出到下一列。从那里开始,数据行可能会爆炸,之后没有任何列会对齐。这可能真的是一团糟。

此外,您不会在 Excel 等应用程序中看到文本限定符。但是,如果您在 Notepad++ 中打开该文件,那么您将看到文本限定符。文件中可能包含大量数据(例如,文本限定符、换行符、列分隔符等),但在某些应用程序中不会显示。该数据通常用于定义数据的结构,而不是实际数据。

对于您的问题,您需要从源数据中删除双引号或使用不同的文本限定符。您可以使用单引号,但如果您有像琼斯这样的数据怎么办?这里的想法是,文本限定符在定义数据结构时应该是唯一的,据我所知,这意味着您不能拥有实际上是数据一部分的文本限定符(请参阅下面的 Microsoft 注释 - 强调我的)。

根据微软:

Specify a text qualifier character. Each column can be configured to recognize a text qualifier.

The use of a qualifier character to embed a qualifier character into a qualified string is supported by the Flat File Connection Manager. The double instance of a text qualifier is interpreted as a literal, single instance of that string. For example, if the text qualifier is a single quote and the input data is 'abc', 'def', 'g'hi', the output data is abc, def, g'hi. However, an instance of a qualifier embedded in a qualified string causes the Flat File Source to fail with the error DTS_E_PRIMEOUTPUTFAILED.

<小时/>

引用文献

关于sql - SSIS - 文本限定符目的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54694980/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com