csv 使用PowerShell从SQL数据库表导出表内容时使用替换

mctunoxg  于 2023-07-31  发布在  Shell
关注(0)|答案(1)|浏览(120)

我正在将SQL表的内容导出到.csv文件中,在此过程中,我需要检查其中一列中是否有不包含“hotmail”字样的电子邮件地址,如果没有,我希望将该电子邮件地址替换为空字符串。
下面是我有的。如果它更容易,我可以更新下载的文件后,它的完成,但似乎不能得到任何工作。

param
(
[String] $destination = 'C:\Temp\',
[String] $ServerName = '10.42.00.000,000',
[String] $dbname = 'Test',
[String] $TableName = 'Test_Data'
)
invoke-sqlcmd -query "SELECT 
Employee_Code,
Employee_Name,
Legal_Firstname,
Legal_Middle_Name,

    if ($_.'Work_Email' -notin @('%hotmail')) {
        $_ | Add-Member -Name '' -type NoteProperty -Value $lineno
        $_ # Output to pipeline
    },
Hire_Date
FROM $TableName" -database $dbname -serverinstance $ServerName |export-csv -path   $destination$TableName.csv

字符串

2nbm6dog

2nbm6dog1#

在SQL查询中执行替换操作:

Invoke-SqlCmd -Query @"
SELECT 
Employee_Code,
Employee_Name,
Legal_Firstname,
Legal_Middle_Name,
CASE 
  WHEN Work_Email NOT LIKE '%hotmail%'
  THEN ''
  ELSE Work_Email
END AS 'Work_Email',
Hire_Date
FROM $TableName
"@ ...

字符串
另一方面,如果你想在客户端执行替换操作,你可以使用通配符字符串与-like操作符进行比较,并使用*代替%

Invoke-SqlCmd ... |ForEach-Object {
    # conditionally replace the property value...
    if ($_.Work_Email -notlike '*hotmail*') {
        $_.Work_Email = ''
    }

    # ... and then output the modified object
    $_
} |Export-Csv ...

相关问题