Azure 使用“选择对象”更改特性的数据类型和添加计算特性
正在尝试从对象获取详细信息并希望将其保存到SQL表Azure 使用“选择对象”更改特性的数据类型和添加计算特性,azure,powershell,azure-powershell,azure-data-lake,select-object,Azure,Powershell,Azure Powershell,Azure Data Lake,Select Object,正在尝试从对象获取详细信息并希望将其保存到SQL表 $GetFiles ` | Select-Object -Property Name, Type ` | Write-SqlTableData -ServerInstance $SQLServer -DatabaseName $SQLDatabase -SchemaName $SQLSchema -TableName $SQLTable -Credential $SQLCredential -Force 问题1。上面的代码失
$GetFiles `
| Select-Object -Property Name, Type `
| Write-SqlTableData -ServerInstance $SQLServer -DatabaseName $SQLDatabase -SchemaName $SQLSchema -TableName $SQLTable -Credential $SQLCredential -Force
问题1。上面的代码失败并出现错误。移除类型柱是可行的。但有没有办法将类型属性强制转换为字符串
写入SqlTableData:找不到.Net类型“Microsoft.Azure.Commands.DataLakeStore.Models.DataLakeStore+FileType”与列“type”的SQL类型之间的映射。
考虑删除具有该类型的列并重复操作。
问题2。我还想添加一个额外的列,比如RowInsertedDate,它将有当前的时间戳,还有一个硬编码列,比如LoadStatus,它的值已启动。如何添加它select子句
问题3。是否要截断此表,然后向其写入数据 您需要对选择对象使用计算属性,如中所述:
Re 1,将类型属性值转换为字符串[string]:
Re 2,添加带有时间戳的RowInsertedDate列和带有固定值“Started”的LoadStatus列:
注意:位置参数隐式绑定到-Property参数
Re 3,首先截断目标表:
我个人无法验证这一点,但我认为您需要将cmdlet与
因为您正在使用Azure Data Lake
以下几点——显然,要小心,因为截断是不可逆的:
# UNTESTED. Note that TRUNCATE is IRREVERSIBLE.
Invoke-SqlCmd -Query "TRUNCATE TABLE $SQLSchema.$SQLTable" `
-ServerInstance $SQLServer -Database $SQLDatabase -Credential $SQLCredential -Force
您需要将计算特性用于选择对象,如中所述:
Re 1,将类型属性值转换为字符串[string]:
Re 2,添加带有时间戳的RowInsertedDate列和带有固定值“Started”的LoadStatus列:
注意:位置参数隐式绑定到-Property参数
Re 3,首先截断目标表:
我个人无法验证这一点,但我认为您需要将cmdlet与
因为您正在使用Azure Data Lake
以下几点——显然,要小心,因为截断是不可逆的:
# UNTESTED. Note that TRUNCATE is IRREVERSIBLE.
Invoke-SqlCmd -Query "TRUNCATE TABLE $SQLSchema.$SQLTable" `
-ServerInstance $SQLServer -Database $SQLDatabase -Credential $SQLCredential -Force
# UNTESTED. Note that TRUNCATE is IRREVERSIBLE.
Invoke-SqlCmd -Query "TRUNCATE TABLE $SQLSchema.$SQLTable" `
-ServerInstance $SQLServer -Database $SQLDatabase -Credential $SQLCredential -Force