如何使用Powershell将CSV文件直接导入Azure DataLake而不是本地路径?

时间:2018-12-27 09:32:25

标签: powershell azure-data-lake

我想直接将$ rootfolder值复制到Azure Data Lake存储。

我无法弄清楚将其导入Data Lake而不是本地路径“ C:/”的正确语法。所以我尝试了从本地复制到Data Lake,仍然显示错误并且没有被复制?

是否可以将值直接导入到Azure Data Lake中,或者只能通过从本地复制到Data Lake中来完成?

 function GetFolderContent 
    {
     Param(
     [string]$rootFolder
     ) 

    $items = Get-AzureRmDataLakeStoreChildItem -Account "xxx" -Path $rootFolder
       Write-Host "$rootFolder" 
       $rootFolder >> "C:\temp\abc.csv"

   `Import-AzureRmDataLakeStoreItem -Account $dataLakeStoreName -Path C:\temp -Destination $uploadDest -Concurrency` 4



    foreach ($item in $items) 
       {
         if ($item.Type -eq "DIRECTORY") 
         {
            $nextFolder = $item.Name 

             if ($rootFolder -eq "\") 
             {
               GetFolderContent $nextFolder 
             }
             else
             {
               GetFolderContent $rootFolder/$nextFolder
             }
         }
       }

          return $null 
    } 

       $rootFolder = "/" 
       $uploadDest ="/"
       $dataLakeStoreName ="xxx"
       GetFolderContent $rootFolder 

1 个答案:

答案 0 :(得分:0)

尝试下面的命令,它对我而言效果很好。

$rootFolder = "/sss/"
$rootFolder >> "$env:Temp/abc.csv"

Import-AzureRmDataLakeStoreItem -Account "joydatalake1" -Path "$env:Temp/abc.csv" -Destination "/test/abc.csv" -Concurrency 4

我的数据湖:

enter image description here

更新

如果要覆盖$env:Temp/abc.csvdatalake中的文件,请在命令中使用-Force,如下所示。

$rootFolder = "/sss/"
$rootFolder | Out-File "$env:Temp/abc.csv" -Force

Import-AzureRmDataLakeStoreItem -Account "joydatalake1" -Path "$env:Temp/abc.csv" -Destination "/test/fgh.csv" -Concurrency 4 -Force