Import-CSV
CSV(쉼표로 구분된 값) 파일의 개체 속성을 원래 개체의 CSV 버전으로 변환합니다.
구문
Import-CSV [[-Delimiter] <char>] [-Path] <string[]> [-Header <string[]>] [<CommonParameters>]
Import-CSV -UseCulture [-Path] <string[]> [-Header <string[]>] [<CommonParameters>]
설명
Import-CSV cmdlet은 Export-CSV cmdlet에서 생성하는 CSV 가변 길이 파일에서 개체를 만듭니다.
Import-CSV cmdlet의 매개 변수를 사용하여 결과 개체의 속성 이름을 결정하는 열 머리글 행을 지정하여 항목 구분 기호를 지정할 수도 있고, 현재 culture의 목록 구분 기호를 항목 구분 기호로 사용하도록 Import-CSV에 지시할 수도 있습니다.
Import-CSV가 만드는 개체는 원래 개체의 CSV 버전입니다. CSV 개체의 속성 값은 원래 개체 속성 값의 문자열 버전입니다. 개체의 CSV 버전에는 메서드가 없습니다.
ConvertTo-CSV 및 ConvertFrom-CSV cmdlet을 사용하여 개체를 CSV 문자열로 변환하거나 CSV 문자열을 개체로 변환할 수도 있습니다. 이 두 cmdlet은 CSV 문자열을 파일에 저장하지 않는다는 점을 제외하면 Export-CSV 및 Import-CSV cmdlet과 같습니다.
매개 변수
-Delimiter <char>
CSV 파일의 속성 값을 구분하는 구분 기호를 지정합니다. 기본값은 쉼표(,)입니다. 콜론(:)과 같은 문자를 입력합니다. 세미콜론(;)을 지정하려면 따옴표로 묶어야 합니다.
파일의 실제 문자열 구분 기호 이외의 문자를 지정하는 경우 Import-CSV는 CSV 문자열에서 개체를 만들 수 없습니다. 대신 이 cmdlet은 문자열을 반환합니다.
필수 여부 |
false |
위치 |
2 |
기본값 |
, |
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
-Header <string[]>
가져온 파일의 대체 열 머리글 행을 지정합니다. 열 머리글은 Import-CSV가 만드는 개체 속성의 이름을 결정합니다.
쉼표로 구분된 열 머리글 목록을 입력합니다. 각 항목을 작은따옴표 또는 큰따옴표로 묶습니다. 머리글 문자열을 따옴표로 묶지 마십시오. 열 수보다 적은 수의 열 머리글을 입력하면 나머지 열에 머리글이 표시되지 않습니다. 열 수보다 많은 수의 머리글을 입력하면 나머지 머리글은 무시됩니다.
Header 매개 변수를 사용할 때는 CSV 파일에서 원래 머리글 행을 삭제하십시오. 이렇게 하지 않으면 Import-CSV가 머리글 행의 항목에서 개체를 추가로 만듭니다.
필수 여부 |
false |
위치 |
named |
기본값 |
|
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
-Path <string[]>
가져올 CSV 파일의 경로를 지정합니다. 또한 경로를 Import-CSV로 파이프할 수 있습니다.
필수 여부 |
true |
위치 |
1 |
기본값 |
없음 |
파이프라인 입력 적용 여부 |
true (ByValue, ByPropertyName) |
와일드카드 문자 적용 여부 |
false |
-UseCulture
현재 culture의 목록 구분 기호를 항목 구분 기호로 사용합니다. 기본값은 쉼표(,)입니다.
culture에 대한 목록 구분 기호를 찾으려면 (Get-Culture).TextInfo.ListSeparator 명령을 사용합니다. CSV 문자열에 사용되는 구분 기호 이외의 문자를 지정하는 경우 ConvertFrom-CSV는 CSV 문자열에서 개체를 만들 수 없습니다. 대신 이 cmdlet은 문자열을 반환합니다.
필수 여부 |
true |
위치 |
named |
기본값 |
쉼표 |
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
<CommonParameters>
이 cmdlet은 -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer, -OutVariable 등의 일반 매개 변수를 지원합니다. 자세한 내용은 about_commonparameters.
입력 및 출력
입력 유형은 cmdlet으로 파이프할 수 있는 개체의 유형입니다. 반환 유형은 cmdlet에서 반환되는 개체의 유형입니다.
입력 |
System.String 경로가 포함된 문자열을 Import-CSV로 파이프할 수 있습니다. |
출력 |
개체 Import-CSV는 CSV 파일 내용으로 설명되는 개체를 반환합니다. |
참고
가져온 개체는 개체 유형의 CSV 버전이므로 CSV가 아닌 개체 유형 버전 형식을 지정하는 Windows PowerShell 유형 형식 지정 항목을 통해 인식되지 않으며 형식이 지정되지도 않습니다.
CSV 파일에서 각 개체는 쉼표로 구분된 개체 속성 값 목록으로 표시됩니다. 속성 값은 개체의 ToString() 메서드를 통해 문자열로 변환되므로 일반적으로 속성 값 이름으로 표시됩니다. Export-CSV는 개체의 메서드를 내보내지 않습니다.
예 1
C:\PS>get-process | export-csv processes.csv
C:\PS> $p = import-CSV processes.csv
C:\PS> $p | get-member
TypeName: CSV:System.Diagnostics.Process
Name MemberType Definition
---- ---------- ----------
Equals Method System.Boolean Equals(Object obj)
GetHashCode Method System.Int32 GetHashCode()
GetType Method System.Type GetType()
ToString Method System.String ToString()
BasePriority NoteProperty System.String BasePriority=8
Company NoteProperty System.String Company=Microsoft Corporation
...
C:\PS> $p | out-gridview
설명
-----------
이 예에서는 Microsoft .NET Framework 개체의 CSV 파일을 내보낸 다음 가져오는 방법을 보여 줍니다.
첫 번째 명령은 Get-Process cmdlet을 사용하여 로컬 컴퓨터의 프로세스를 가져오며 파이프라인 연산자(|)를 사용하여 프로세스 개체를 Export-CSV cmdlet으로 보냅니다. 그러면 이 cmdlet은 프로세스 개체를 현재 디렉터리에 있는 Processes.csv 파일로 내보냅니다.
두 번째 명령은 Import-CSV cmdlet을 사용하여 Import-CSV 파일의 프로세스를 가져옵니다. 그런 다음 결과 프로세스 개체를 $P 변수에 저장합니다.
세 번째 명령은 파이프라인 연산자를 사용하여 가져온 개체를 Get-Member cmdlet으로 파이프합니다. 이 작업의 결과에는 가져온 개체는 Get-Process가 반환하는 System.Diagnostic.Process 개체가 아니라 CSV:System.Diagnostic.Process 개체임이 표시됩니다.
또한 프로세스 개체의 CSV 버전에 대한 형식 지정 파일에는 항목 유형이 없으므로 이들 개체는 표준 프로세스 개체와 동일한 방식으로 형식이 지정되지 않습니다.
개체를 표시하려면 Format-Table 및 Format-List와 같은 형식 지정 cmdlet을 사용하거나 개체를 Out-GridView로 파이프합니다.
예 2
C:\PS>get-process | export-csv processes.csv -Delimiter :
C:\PS> $p = import-csv processes.csv -Delimiter :
설명
-----------
이 예에서는 Import-CSV의 Delimiter 매개 변수를 사용하는 방법을 보여 줍니다. 이 예에서는 프로세스를 콜론(:)을 구분 기호로 사용하는 파일로 내보냅니다.
가져올 때 Import-CSV 파일은 Delimiter 매개 변수를 사용하여 파일에서 사용되는 구분 기호를 나타냅니다.
예 3
C:\PS>$p = import-csv processes.csv -UseCulture
C:\PS> (get-culture).textinfo.listseparator
,
설명
-----------
이 예에서는 Import-CSV의 UseCulture 매개 변수를 사용하는 방법을 보여 줍니다.
첫 번째 명령은 Processes.csv 파일의 개체를 $p 변수로 가져옵니다. 이 명령은 UseCulture 매개 변수를 사용하여 현재 culture에 대해 정의된 목록 구분 기호를 사용하도록 Import-CSV에 지시합니다.
두 번째 명령은 현재 culture의 목록 구분 기호를 표시합니다. 이 명령은 Get-Culture cmdlet을 사용하여 현재 culture를 가져오며 점(.) 방법을 사용하여 현재 culture의 TextInfo 속성과 TextInfo에 포함된 개체의 ListSeparator 속성을 가져옵니다. 이 예에서 명령은 쉼표를 반환합니다.
예 4
C:\PS>start-job -scriptblock { get-process } | export-csv jobs.csv
C:\PS> $header = "MoreData","StatusMessage","Location","Command","State","Finished","InstanceId","SessionId","Name","ChildJobs","Output","Error","Progress","Verbose","Debug","Warning","StateChanged"
# Delete header from file
C:\PS> $a = (get-content jobs.csv)
C:\PS> $a = $a[0], $a[2..($a.count - 1)]
C:\PS> $a > jobs.csv
C:\PS> $j = import-csv jobs.csv -header $header
C:\PS> $j
MoreData : True
StatusMessage :
Location : localhost
Command : get-process
State : Running
Finished : System.Threading.ManualResetEvent
InstanceId : 135bdd25-40d6-4a20-bd68-05282a59abd6
SessionId : 1
Name : Job1
ChildJobs : System.Collections.Generic.List`1[System.Management.Automation.Job]
Output : System.Management.Automation.PSDataCollection`1[System.Management.Automation.PSObject]
Error : System.Management.Automation.PSDataCollection`1[System.Management.Automation.ErrorRecord]
Progress : System.Management.Automation.PSDataCollection`1[System.Management.Automation.ProgressRecord]
Verbose : System.Management.Automation.PSDataCollection`1[System.String]
Debug : System.Management.Automation.PSDataCollection`1[System.String]
Warning : System.Management.Automation.PSDataCollection`1[System.String]
StateChanged :
설명
-----------
이 예에서는 Import-CSV의 Header 매개 변수를 사용하여 결과로 가져온 개체의 속성 이름을 변경하는 방법을 보여 줍니다.
첫 번째 명령은 Start-Job cmdlet을 사용하여 로컬 컴퓨터에서 Get-Process 명령을 실행하는 백그라운드 작업을 시작합니다. 파이프라인 연산자(|)가 Export-CSV cmdlet으로 결과 작업 개체를 보내면 이 cmdlet이 작업 개체를 CSV 형식으로 변환합니다. 그러면 할당 연산자(=)가 결과 CSV를 Jobs.csv 파일에 저장합니다.
두 번째 명령은 머리글을 $header 변수에 저장합니다. 기본 머리글과 달리 이 머리글은 "HasMoreData" 대신 "MoreData"를, "JobStateInfo" 대신 "State"를 사용합니다.
다음의 세 명령은 Jobs.csv 파일에서 원래 머리글(두 번째 줄)을 삭제합니다.
여섯 번째 명령은 Import-CSV cmdlet을 사용하여 Jobs.csv 파일을 가져오고 CSV 문자열을 작업 개체의 CSV 버전으로 변환합니다. 이 명령은 Header 매개 변수를 사용하여 대체 머리글을 전송합니다. 그 결과는 $j 변수에 저장됩니다.
일곱 번째 명령은 개체를 $j 변수에 표시합니다. 명령 출력에 나와 있는 것처럼 결과 개체에는 "MoreData" 및 "State" 속성이 있습니다.
예 5
C:\PS>".\processes.csv" | import-csv
설명
-----------
이 명령은 Processes.csv 파일에서 개체를 가져옵니다.