Как открыть CSV в PowerShell и дублировать один из столбцов, чтобы у меня было 2 столбца с одинаковыми данными, но с разными именами? - PullRequest
0 голосов
/ 26 марта 2020

У меня есть CSV, который я импортирую с помощью команды import-csv, как показано ниже:

emailAddress,   event,  tokenDate,  Yadda1, Yadda2
aaaa@bbb.com,   A1234,  23/03/2020, 98765,  54321
bbbb@ccc.com,   B2345,  23/03/2020, 87654,  32109
cccc@ddd.com,   C3456,  23/03/2020, 76543,  21098

У меня есть код, который импортирует CSV, за исключением некоторых столбцов, которые я не хочу (yadda1, yadda2) и затем он переименовывает заголовки, которые импортирует.

После импорта и переименования у меня есть код, который изменяет данные столбцов status_date на формат unixtime, и это прекрасно работает.

Теперь мне нужно добавить новый столбец с именем «status_date2», который содержит в точности те же данные, что и status_date для каждой строки, поэтому, если status_date в строке 50 содержит значение unixtime 1584370028, тогда новый status_date2 строки 50 теперь должен также содержать значение 1584370028.

Я пытался сделайте что-то вроде этого, что, как я думал, просто примет значение status_date, но столбец status_date2 пуст до конца - ПОЖАЛУЙСТА, ПОМОГИТЕ !!!

@{Name='status_date2';Expression={$_."status_date"}} 

Код выглядит следующим образом:

Import-Csv "c:\temp\myCSV.csv" |
Select * -ExcludeProperty "emailAddress", "event", "tokenDate" |

# Rename the column headers, for exmaple: rename from emailAddress to email_address


select -Property @{label="email_address";expression={$($_."emailAddress")}}, 
@{label="status";expression={$($_."event")}},
@{label="status_date";expression={$($_."tokenDate")}},

#Replace the date column data with unixtime format
% {$_.status_date = (Get-Date($_.status_date) -UFormat %s); $_} |

# Add a new column with current date/time is unixtime format for the CRM
@{Name='status_date2';Expression={Get-Date -UFormat %s}} |

1 Ответ

2 голосов
/ 26 марта 2020

Вы можете просто сделать один и тот же расчет дважды (для полей только для перевода вы можете просто указать имя в качестве значения Expression):

Import-Csv "c:\temp\myCSV.csv" |Select -Property @{Label="email_address";Expression="emailAddress"}, 
@{Label="status";Expression="event"},
@{Label="status_date";expression={Get-Date $_."tokenDate" -UFormat %s}},
@{Label="status_date2";expression={Get-Date $_."tokenDate" -UFormat %s}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...