2014-10-28 73 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 
相關問題