我在公司的IT部门工作,我的任务列表中的任务之一是定期更新电话拨号计划(每3个月左右)以确保所有本地区域代码和交换都是最新的
我通常会访问以下网站,该网站每个月都会更新,以获取区号和交换的列表,并手动查看我拥有的所有区域,我需要检查的所有区域。该列表的格式为CSV,因此我可以将其粘贴到Excel或DB中。
我的问题是,是否有一个我可以运行的查询将从列表2中获取所有区域,将它与列表1进行比较,并获取列表1的第一列和第二列?我相信这可以通过SQL或Excel或者使用Powershell或Linux脚本的其他方式来实现。 由于我将定期执行此操作,因此我只想每月粘贴新列表,在列表2中运行它,并添加所有新的交换。
Sample of List 1:
http://cnac.ca/data/COCodeStatus_NPA613.txt
613,200,8303,TELUS Mobility,In Service,Perth,
613,201,920D,Westport Telephone Company Limited,In Service,Perth,
613,202,8821,Rogers Communications Partnership (Wireless),In Service,Bancroft,
613,203,6574,Bell Mobility,In Service,Ottawa-Hull,
613,204,6574,Bell Mobility,In Service,Ottawa-Hull,
613,205,2782,TELUS Integrated Communications,In Service,Smiths Falls,
613,206,8303,TELUS Mobility,In Service,Smiths Falls,
613,207,8303,TELUS Mobility,In Service,Smiths Falls,
613,208,8377,Rogers Communications Partnership (Cable),In Service,Trenton,
613,209,154E,Iristel Inc.,In Service,Cornwall,
613,210,8377,Rogers Communications Partnership (Cable),In Service,Belleville,
613,211,,,For Special Use,,Public Information and Referral Services
613,212,2782,TELUS Integrated Communications,In Service,Ottawa-Hull,
613,213,6574,Bell Mobility,In Service,Brockville,
613,214,6574,Bell Mobility,In Service,Kingston,
613,215,2782,TELUS Integrated Communications,In Service,Kemptville,
613,216,8377,Rogers Communications Partnership (Cable),In Service,Ottawa-Hull,
613,217,6574,Bell Mobility,In Service,Kingston,
613,218,8821,Rogers Communications Partnership (Wireless),In Service,Ottawa-Hull,
613,219,8821,Rogers Communications Partnership (Wireless),In Service,Ottawa-Hull,
613,220,8821,Rogers Communications Partnership (Wireless),In Service,Ottawa-Hull,
613,221,8051,Bell Canada,In Service,Ottawa-Hull,
613,222,6574,Bell Mobility,In Service,Ottawa-Hull,
613,223,8819,TELUS Mobility,In Service,Ottawa-Hull,
613,224,8051,Bell Canada,In Service,Ottawa-Hull,
613,225,8051,Bell Canada,In Service,Ottawa-Hull,
613,226,8051,Bell Canada,In Service,Ottawa-Hull,
613,227,8819,TELUS Mobility,In Service,Ottawa-Hull,
613,228,8051,Bell Canada,In Service,Ottawa-Hull,
613,229,8819,TELUS Mobility,In Service,Ottawa-Hull,
613,230,8051,Bell Canada,In Service,Ottawa-Hull,
613,231,8051,Bell Canada,In Service,Ottawa-Hull,
613,232,8051,Bell Canada,In Service,Ottawa-Hull,
613,233,8051,Bell Canada,In Service,Ottawa-Hull,
613,234,8051,Bell Canada,In Service,Ottawa-Hull,
613,235,8051,Bell Canada,In Service,Ottawa-Hull,
Sample of List 2:
Carleton Place, Ont
Carp, Ont
Casselman, Ont
Chelsea, Que
chesterville, Ont
编辑:我还希望脚本验证列“状态”并确保返回的所有数字都具有“在服务中”状态,但在输出中不显示“在服务中”。我希望输出只显示区域代码,然后是交换(EX.613230)
答案 0 :(得分:0)
您可以轻松地在PowerShell中进行匹配(和下载)。以下是您的样本,您可以根据自己的喜好进行更改:
更新:答案现在包括问题更新中增加的要求。
鉴于名为areasToInclude.txt的文件包含要包含的区域列表,每行一个区域,如下所示:
Carleton Place Carp Casselman Chelsea Chesterville Brighton
以下脚本应按要求进行过滤和选择:
function Get-AreaCodes { PARAM ( [string[]]$AreasToRetrieve, [string]$StatusFilter ) $webRequestResults = Invoke-WebRequest -Uri "http://cnac.ca/data/COCodeStatus_NPA613.txt" $dataFromExternalSource = ConvertFrom-Csv $webRequestResults.Content foreach ($line in $dataFromExternalSource) { if ($AreasToRetrieve.Contains($line.'Rate Center') -AND $line.Status -eq $StatusFilter) { Write-Output $line } } } $areasToRetrieve = Get-Content "areasToInclude.txt" #Calls the above defined function and then selects only the requested properties from each returned object $areaCodes = Get-AreaCodes -AreasToRetrieve $areasToRetrieve -StatusFilter "In Service" | Foreach { $_.NPA + $_.'CO Code (NXX)' } #Saves the area codes into a file $areaCodes | Set-Content .\areas.txt
如果您需要使用文本文件中的其他编码(默认值除外),您可以通过分别将-Encoding <encoding to use>
参数添加到Get-Content和Set-Content函数调用来指定编码。
答案 1 :(得分:0)
数据库 - SQL选项
在数据库中创建2个表
将csv文本中的数据导入data
表(因此创建6列,其中一列为City
)
将区域导入另一个表格(2列&gt; city
,region
)
使用简单的INNER JOIN
SELECT t.Column1, t.Column2, t.City, r.Region
FROM table1 t
INNER JOIN regions r ON t.City = r.City
Excel选项
Data -> Text To Columns
创建CSV格式的列。For the LOOKUP function to work correctly, the Lookup_vector must be sorted in ascending order (A to Z or smallest to largest for numbers)
例如
P.S。小心LOOKUP功能:If the function cannot find an exact match for the Lookup_value, it chooses the largest value in the Lookup_vector that is less than or equal in value to the Lookup_value
。因此,添加IF并检查区域表中是否存在城市是更安全的。