【问题标题】:How to convert txt to csv files in Azure Data Factory如何在 Azure 数据工厂中将 txt 转换为 csv 文件
【发布时间】:2019-08-27 12:55:08
【问题描述】:

我正在尝试在多个第 1 代 Azure 数据湖存储实例之间移动文件,而无需编写 Azure App Function 或直接调用 Azure 存储 SDK。

情况是我在数据湖 1 中有几个名为 test1.txt 和 test2.txt 的文本文件。它们都是以制表符作为分隔符的文件。当我尝试使用带有.csv 作为扩展名的复制活动时,文件确实会移至数据湖2,但仍保留.txt 文件。

复制活动源和接收器如下所示:

{
    "typeProperties": {
        "source": {
            "type": "DelimitedTextSource",
            "storeSettings": {
                "type": "AzureDataLakeStoreReadSettings",
                "recursive": true,
                "wildcardFileName": "*.*",
                "enablePartitionDiscovery": false
            },
            "formatSettings": {
                "type": "DelimitedTextReadSettings"
            }
        },
        "sink": {
            "type": "DelimitedTextSink",
            "storeSettings": {
                "type": "AzureDataLakeStoreWriteSettings"
            },
            "formatSettings": {
                "type": "DelimitedTextWriteSettings",
                "quoteAllText": true,
                "fileExtension": ".csv"
            }
        }
    }
}

我也尝试过复制到 blob 容器,但同样的问题仍然存在:文件保留其 .txt 扩展名。

复制后是否可以更改文件扩展名?

【问题讨论】:

    标签: azure azure-data-lake azure-data-factory-2


    【解决方案1】:

    您可以在接收器数据集中定义最终结果文件名,如果文件始终被称为相同,那么您可以对其进行硬核。如果不是,它可能会变得更复杂一些,因为您需要使用 GetMetadata 来获取每个文件名,然后使用 Foreach 来迭代它们并使用修改后的名称复制每个文件。

    希望这有帮助!

    【讨论】:

    • 如最初问题中所述,我已尝试将接收器数据集中的文件名硬编码为 .csv 扩展名,但没有成功。我还尝试了 Get Metadata + ForEach + Copy 活动组合,但也没有用。我也尝试过将这种组合与查找活动一起使用,但也没有用。这些文件每次都会被复制,但它们的扩展名仍然是.txt。
    • 扩展名只是一个名称,它不会影响 blob 存储或数据工厂的任何内容。如果内容是正确的,那你就想改名吗?
    • 是的,我真的只对移动文件和更改名称感兴趣。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 2022-07-17
    • 2021-10-26
    • 2020-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多