2014-10-28 64 views
0

我有一些数据处于分隔不良的状态,我已经设法将其转化为CSV以供进一步解析。解析具有不同数量的列和格式的CSV列=数据

我已经成功地改变它,从而是它的格式:

“时间戳”, “服务器名称”, “ProcessName”,Column4 =数据4,Column5 = DATA5,... Column25 = Data25

在实践中,这可能看起来像:

12时34分23秒,MyServerName,MyProcess,类型= 10,价格= 45.4,ProductType = AV

21时23分十七秒,MyServerName2,MyProcess2,类型= 10,ProductType = AV,ClassKey = 2324

我有两个问题,我可以使用一些帮助解决。首先是解析数据,以便“Type = 10”成为“Type”列标题,并且该行在将数据上载到MS SQL Server数据库时采用值“10”。第二个问题是我的专栏在我的CSV中没有一致的位置。这听起来像我将不得不做出一系列关键:值对,但我不确定如何做到这一点,或者如果这是最好的方法。任何人都可以提供一些有关哪些工具/方法最适合这方面的见解?

+0

是第3列始终保持一致? – mjolinor 2014-10-28 21:20:18

+0

可能感兴趣http://stackoverflow.com/questions/8168548/ssis-task-for-inconsistent-column-count-import/8173162#8173162 – billinkc 2014-10-29 04:01:27

回答

1

不知道这是否有助于或没有,但:

$data = @(
'12:34:23, MyServerName, MyProcess, Type=10, Price=45.4, ProductType=AV' 
'21:23:17, MyServerName2, MyProcess2, Type=10, ProductType=AV, ClassKey=2324' 
) 

$data -replace '^([^,]+),([^,]+),([^,]+)','Timestamp=$1, ServerName=$2, ProcessName=$3' | 
foreach {New-Object PSObject -Property (convertfrom-stringdata $_.replace(',',"`n"))} 



Timestamp : 12:34:23 
ProcessName : MyProcess 
ServerName : MyServerName 
Price  : 45.4 
ProductType : AV 
Type  : 10 

Timestamp : 21:23:17 
ProcessName : MyProcess2 
ClassKey : 2324 
ServerName : MyServerName2 
ProductType : AV 
Type  : 10 
相关问题