从Azure数据湖存储文件中删除行逗号结尾

时间:2018-11-28 07:38:34

标签: azure powershell azure-data-lake

我需要使用Power Shell在Azure Data Lake存储中进行文件处理的一些输入。

我的ADLS第一代帐户中有一个管道定界输入文件。

文件内容如下所示

1|2|3|a,b,
3|4|5|d,h,

我可以使用以下代码在本地PC中使用powershell删除最后一个逗号

Get-Content $file_name | ForEach-Object {$_.TrimEnd(",")  } 

但是,当我对Azure Data Lake Storage Gen 1帐户中的相同文件运行相同的查询时,数据没有任何反应。我使用的代码是

Get-AzureRmDataLakeStoreItemContent -Account $accountName -Path $myrootdir/path/test.csv| ForEach-Object {$_.TrimEnd( ",")  }

我有一个发现是ForEach-Object只返回一次。那就是如果我在ForEach-Object循环内打个招呼,它只会打印一个。但是我通过运行-Head和-Tail命令验证没有换行问题。我要附上相同的屏幕截图。

能否请您帮助我了解我在这里做错了什么,以及删除每行最后一个逗号的替代方法。

Compare behavior between Local and ADLS

1 个答案:

答案 0 :(得分:0)

我认为您不能直接通过powershell修改商店商品。

Get-AzureRmDataLakeStoreItemContent仅获取内容。 (根据我的经验,如果允许的话,它应该是Set-AzureRmDataLakeStoreItemContentUpdate-AzureRmDataLakeStoreItemContent之类的命令)

解决方法是再次export the file->在本地-> import it进行修改。

更新

如果我不误解您的问题,请尝试以下命令。

((Get-AzureRmDataLakeStoreItemContent -AccountName "joydatalake1" -Path "/sss/test.csv").ToString() -split("`r")).Trim() | ForEach-Object {$_.TrimEnd(",")}

enter image description here