PowerShell / PowerShell/PowerShell

CSV deserialization outputs nothing if there are only a certain number of empty fields

Open
#24,698 8 comments 1 reaction 1 assignee View on GitHub

Nobody has claimed this yet.

In-PR Issue-Bug WG-Cmdlets WG-Reviewed
Dominant language
C#
Stars
55.5k
Forks
8.5k
Avg merge
1d 2h
Merged PRs (30d)
88

Description

Prerequisites

If CSV input data doesn't satisfy an uncommunicated threshold regarding the number of columns and empty quoted/unquoted fields, CSV deserialization using ConvertFrom-Csv/Import-Csv yields no output. No error/warning is emitted either; the input is effectively ignored.

Steps to reproduce
Test 1

In the following examples, no custom object is emitted by ConvertFrom-Csv irrespective of row count.

# No custom object output, irrespective of row count.

# Example 1a:
@'
"P1"
""
'@ | ConvertFrom-Csv

# Example 1b:
@'
"P1"
""
""
""
'@ | ConvertFrom-Csv
Tests 2-3

In the following examples, a custom object is emitted for all rows except the last.

# Partial custom object output. 
# Output for each row except the last.
# If there is only one row, no object is emitted.

# Example 2a:
@'
"P1","P2"
"",
'@ | ConvertFrom-Csv # Nothing

# Example 2b:
@'
"P1","P2"
"",
"",
'@ | ConvertFrom-Csv # 1 custom object

# Example 3a:
@'
"P1","P2"
,
'@ | ConvertFrom-Csv # Nothing

# Example 3b:
@'
"P1","P2"
,
,
'@ | ConvertFrom-Csv # 1 custom object
Tests 4-6

Custom object output is correct in following examples.

# Custom object output in examples 4-6.

# Example 4a:
@'
"P1","P2"
,""
'@ | ConvertFrom-Csv

# Example 4b:
@'
"P1","P2"
,""
,""
'@ | ConvertFrom-Csv

# Example 5a:
@'
"P1","P2"
"",""
'@ | ConvertFrom-Csv

# Example 5b:
@'
"P1","P2"
"",""
"",""
'@ | ConvertFrom-Csv

# Example 6a:
@'
"P1","P2","P3"
,,
'@ | ConvertFrom-Csv

# Example 6b:
@'
"P1","P2","P3"
,,
,,
'@ | ConvertFrom-Csv

Note:

Expected behavior
  • Test 1: Should emit a custom object with a P1 property.
  • Tests 2a & 3a: Should emit a custom object with a P1 and P2 property.
  • Tests 2b & 3b: Should emit 2 custom objects, each with a P1 and P2 property.
Actual behavior
  • Test 1: No custom object output.
  • Tests 2-3: Partial custom object output for all rows except the last.
Environment data
Name                           Value
----                           -----
PSVersion                      7.5.0-rc.1
PSEdition                      Core
GitCommitId                    7.5.0-rc.1
OS                             Microsoft Windows 10.0.19045
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.