相关文章推荐

试用 Microsoft Fabric 中的数据工厂 ,这是一种适用于企业的一站式分析解决方案。 Microsoft Fabric 涵盖从数据移动到数据科学、实时分析、商业智能和报告的所有内容。 了解如何免费 开始新的试用

若要 分析带分隔符的文本文件或以带分隔符的文本格式写入数据 ,请遵循此文章中的说明。

以下连接器支持带分隔符的文本格式:

  • Amazon S3
  • Amazon S3 兼容存储
  • Azure Blob
  • Azure Data Lake Storage Gen1
  • Azure Data Lake Storage Gen2
  • Azure 文件
  • Google Cloud Storage
  • Oracle 云存储
  • 数据集属性

    有关可用于定义数据集的各部分和属性的完整列表,请参阅 数据集 一文。 本部分提供带分隔符的文本数据集支持的属性列表。

    columnDelimiter 用于分隔文件中的列的字符。
    默认值为“逗号( , )”。 当列分隔符定义为空字符串(意味着没有分隔符)时,整行将被视为单个列。
    目前,只有映射数据流支持使用空字符串作为列分隔符,而复制活动则不支持。 rowDelimiter 对于复制活动,是用于分隔文件中的行的单个字符或“\r\n”。 默认值为以下任何一项:[“\r\n”、“\r”、“\n”](读取时);“\r\n”(写入时)。 “\r\n”仅在复制命令中受支持。
    对于映射数据流,是用于分隔文件中的行的单个或两个字符。 默认值为以下任何一项:[“\r\n”、“\r”、“\n”](读取时);“\n”(写入时)。
    当行分隔符设置为“无分隔符”(空字符串)时,列分隔符也必须设置为“无分隔符”(空字符串),这意味着将整个内容视为单个值。
    目前,只有映射数据流支持使用空字符串作为行分隔符,而复制活动则不支持。 quoteChar 当列包含列分隔符时,用于括住列值的单个字符。
    默认值为 双引号 "
    quoteChar 定义为空字符串时,它表示不使用引号字符且不用引号括住列值, escapeChar 用于转义列分隔符和值本身。 escapeChar 用于转义括住值中的引号的单个字符。
    默认值为 反斜杠 \
    escapeChar 定义为空字符串时, quoteChar 也必须设置为空字符串。在这种情况下,应确保所有列值不包含分隔符。 firstRowAsHeader 指定是否要将第一行视为/设为包含列名称的标头行。
    允许的值为 true true (默认值)。
    当“将第一行用作标题”为 false 时,请注意,UI 数据预览和查找活动输出会自动以 Prop_{n} 格式(从 0 开始)生成列名称,复制活动需要使用从源到接收器的 显式映射 ,并且按序号(从 1 开始)定位各个列,映射数据流以 Column_{n} 格式(从 1 开始)的名称列出和定位各个列。 nullValue 指定 null 值的字符串表示形式。
    默认值为 空字符串 。 encodingName 用于读取/写入测试文件的编码类型。
    允许的值如下所示:“UTF-8”、“不带 BOM 的 UTF-8”、“UTF-16”、“UTF-16BE”、“UTF-32”、“UTF-32BE”、“US-ASCII”、“UTF-7”“BIG5”、“EUC-JP”、“EUC-KR”、“GB2312”、“GB18030”、“JOHAB”、“SHIFT-JIS”、“CP875”、“CP866”、“IBM00858”、“IBM037”、“IBM273”、“IBM437”、“IBM500”、“IBM737”、“IBM775”、“IBM850”、“IBM852”、“IBM855”、“IBM857”、“IBM860”、“IBM861”、“IBM863”、“IBM864”、“IBM865”、“IBM869”、“IBM870”、“IBM01140”、“IBM01141”、“IBM01142”、“IBM01143”、“IBM01144”、“IBM01145”、“IBM01146”、“IBM01147”、“IBM01148”、“IBM01149”、“ISO-2022-JP”、“ISO-2022-KR”、“ISO-8859-1”、“ISO-8859-2”、“ISO-8859-3”、“ISO-8859-4”、“ISO-8859-5”、“ISO-8859-6”、“ISO-8859-7”、“ISO-8859-8”、“ISO-8859-9”、“ISO-8859-13”、“ISO-8859-15”、“WINDOWS-874”、“WINDOWS-1250”、“WINDOWS-1251”、“WINDOWS-1252”、“WINDOWS-1253”、“WINDOWS-1254”、“WINDOWS-1255”、“WINDOWS-1256”、“WINDOWS-1257”、“WINDOWS-1258”。
    注意,映射数据流不支持 UTF-7 编码。
    请注意,映射数据流不支持使用字节顺序标记 (BOM) 进行 UTF-8 编码。 compressionCodec 用于读取/写入文本文件的压缩编解码器。
    允许的值为 bzip2、gzip、deflate、ZipDeflate、TarGzip、Tar、snappy 或 lz4 。 默认设置是不压缩。
    注意:目前,复制活动不支持“snappy”和“lz4”,映射数据流不支持“ZipDeflate”、“TarGzip”和“Tar”。
    注意,使用复制活动解压缩 ZipDeflate/TarGzip/Tar 文件并将其写入基于文件的接收器数据存储时,默认情况下文件将提取到 <path specified in dataset>/<folder named as source compressed file>/ 文件夹,对 复制活动源 使用 preserveZipFileNameAsFolder / preserveCompressionFileNameAsFolder 来控制是否以文件夹结构形式保留压缩文件名 。 compressionLevel 压缩率。
    允许的值为 Optimal Fastest
    - Fastest :尽快完成压缩操作,不过,无法以最佳方式压缩生成的文件。
    - 最佳 :以最佳方式完成压缩操作,不过,需要耗费更长的时间。 有关详细信息,请参阅 Compression Level (压缩级别)主题。

    下面是 Azure Blob 存储上的带分隔符的文本数据集的示例:

    "name": "DelimitedTextDataset", "properties": { "type": "DelimitedText", "linkedServiceName": { "referenceName": "<Azure Blob Storage linked service name>", "type": "LinkedServiceReference" "schema": [ < physical schema, optional, retrievable during authoring > ], "typeProperties": { "location": { "type": "AzureBlobStorageLocation", "container": "containername", "folderPath": "folder/subfolder", "columnDelimiter": ",", "quoteChar": "\"", "escapeChar": "\"", "firstRowAsHeader": true, "compressionCodec": "gzip"

    复制活动属性

    有关可用于定义活动的各部分和属性的完整列表,请参阅 管道 一文。 本部分提供带分隔符的文本源和接收器支持的属性列表。

    带分隔符的文本作为源

    复制活动的 *source* 部分支持以下属性。

    skipLineCount 指示从输入文件读取数据时要跳过的非空行数 。
    如果同时指定了 skipLineCount 和 firstRowAsHeader,则先跳过行,然后从输入文件读取标头信息。 compressionProperties 一组属性,指示如何为给定的压缩编解码器解压缩数据。 preserveZipFileNameAsFolder
    (在 compressionProperties -> type 下为 ZipDeflateReadSettings ) 当输入数据集配置了 ZipDeflate 压缩时适用。 指示是否在复制过程中以文件夹结构形式保留源 zip 文件名。
    - 如果设置为“true(默认)”,服务会将解压缩的文件写入 <path specified in dataset>/<folder named as source zip file>/
    - 如果设置为“false”,服务会将解压缩的文件直接写入 <path specified in dataset> 。 请确保不同的源 zip 文件中没有重复的文件名,以避免产生冲突或出现意外行为。 preserveCompressionFileNameAsFolder
    (在 compressionProperties -> type 下为 TarGZipReadSettings TarReadSettings ) 当输入数据集配置了 TarGzip/Tar 压缩时适用 。 指示是否在复制过程中以文件夹结构形式保留源压缩文件名。
    - 如果设置为“true(默认)”,服务会将解压缩文件写入 <path specified in dataset>/<folder named as source compressed file>/
    - 如果设置为“false”,服务会将解压文件直接写入 <path specified in dataset> 。 请确保不同的源文件中没有重复的文件名,以避免产生冲突或出现意外行为。
    "activities": [
            "name": "CopyFromDelimitedText",
            "type": "Copy",
            "typeProperties": {
                "source": {
                    "type": "DelimitedTextSource",
                    "storeSettings": {
                        "type": "AzureBlobStorageReadSettings",
                        "recursive": true
                    "formatSettings": {
                        "type": "DelimitedTextReadSettings",
                        "skipLineCount": 3,
                        "compressionProperties": {
                            "type": "ZipDeflateReadSettings",
                            "preserveZipFileNameAsFolder": false
    

    带分隔符的文本作为接收器

    复制活动的 *sink* 部分支持以下属性。

    fileExtension 用来为输出文件命名的扩展名,例如 .csv.txt。 未在 DelimitedText 输出数据集中指定 fileName 时,必须指定该扩展名。 如果在输出数据集中配置了文件名,则它将其用作接收器文件名,并且将忽略文件扩展名设置。 未在输出数据集中指定文件名时为“是” maxRowsPerFile 在将数据写入到文件夹时,可选择写入多个文件,并指定每个文件的最大行数。 fileNamePrefix 配置 maxRowsPerFile 时适用。
    在将数据写入多个文件时,指定文件名前缀,生成的模式为 <fileNamePrefix>_00000.<fileExtension>。 如果未指定,将自动生成文件名前缀。 如果源是基于文件的存储或已启用分区选项的数据存储,则此属性不适用。

    映射数据流属性

    在映射数据流中,可以在以下数据存储中读取和写入带分隔符的文本格式:Azure Blob 存储Azure Data Lake Storage Gen1Azure Data Lake Storage Gen2SFTP 还可在 Amazon S3 中读取带分隔符的文本格式。

    内联数据集

    映射数据流支持将“内联数据集”作为定义源和接收器的选项。 内联分隔式数据集直接在源和接收器转换中定义,并且不会在定义的数据流外部共享。 该数据集对直接在数据流中参数化数据集属性非常有用,并且可以从共享 ADF 数据集的性能改进中获益。

    读取大量源文件夹和文件时,可以通过在“投影 | 架构”选项对话框中设置选项“用户投影架构”来提升数据流文件发现的性能。 此选项会关闭 ADF 的默认架构自动发现,并将极大地提升文件发现的性能。 在设置此选项前,请务必导入投影,以便 ADF 具有用于投影的现有架构。 此选项不适用于架构偏差。

    下表列出了带分隔符的文本源支持的属性。 你可以在“源选项”选项卡中编辑这些属性。

    数据流脚本属性 写入的数据的命名格式。 默认情况下,每个分区有一个 part-#####-tid-<guid> 格式的文件 模式:字符串
    每分区:String[]
    将文件命名为列数据:字符串
    输出到单个文件:['<fileName>']
    将文件夹命名为列数据:字符串 filePattern
    partitionFileNames
    rowUrlColumn
    partitionFileNames
    rowFolderUrlColumn 将所有值括在引号中 truefalse quoteAll 向输出文件添加客户标头 [<string array>] 标头的值开始缓存响应

    接收器示例

    下图是映射数据流中带分隔符的文本接收器配置的示例。

    关联的数据流脚本为:

    CSVSource sink(allowSchemaDrift: true,
        validateSchema: false,
        truncate: true,
        skipDuplicateMapInputs: true,
        skipDuplicateMapOutputs: true) ~> CSVSink
    
    

    下面是与带分隔符的文本格式相关的一些常见连接器和格式:

  • Azure Blob 存储 (connector-azure-blob-storage.md)
  • 二进制格式 (format-binary.md)
  • Dataverse(connector-dynamics-crm-office-365.md)
  • 增量格式 (format-delta.md)
  • Excel 格式 (format-excel.md)
  • 文件系统 (connector-file-system.md)
  • FTP (connector-ftp.md)
  • HTTP (connector-http.md)
  • JSON 格式 (format-json.md)
  • Parquet 格式 (format-parquet.md)
  • 复制活动概述
  • 映射数据流
  • Lookup 活动
  • GetMetadata 活动
  •  
    推荐文章