Title: CSV deserialization outputs nothing if there are only a certain number of empty fields · Issue #24698 · PowerShell/PowerShell · GitHub
Open Graph Title: CSV deserialization outputs nothing if there are only a certain number of empty fields · Issue #24698 · PowerShell/PowerShell
X Title: CSV deserialization outputs nothing if there are only a certain number of empty fields · Issue #24698 · PowerShell/PowerShell
Description: Prerequisites Write a descriptive title. Make sure you are able to repro it on the latest released version Search the existing issues. Refer to the FAQ. Refer to Differences between Windows PowerShell 5.1 and PowerShell. If CSV input dat...
Open Graph Description: Prerequisites Write a descriptive title. Make sure you are able to repro it on the latest released version Search the existing issues. Refer to the FAQ. Refer to Differences between Windows PowerSh...
X Description: Prerequisites Write a descriptive title. Make sure you are able to repro it on the latest released version Search the existing issues. Refer to the FAQ. Refer to Differences between Windows PowerSh...
Opengraph URL: https://github.com/PowerShell/PowerShell/issues/24698
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"CSV deserialization outputs nothing if there are only a certain number of empty fields","articleBody":"### Prerequisites\n\n- [X] Write a descriptive title.\n- [X] Make sure you are able to repro it on the [latest released version](https://github.com/PowerShell/PowerShell/releases)\n- [X] Search the existing issues.\n- [X] Refer to the [FAQ](https://github.com/PowerShell/PowerShell/blob/master/docs/FAQ.md).\n- [X] Refer to [Differences between Windows PowerShell 5.1 and PowerShell](https://learn.microsoft.com/powershell/scripting/whats-new/differences-from-windows-powershell).\n\nIf 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.\n\n### Steps to reproduce\n\n#### Test 1\n\nIn the following examples, no custom object is emitted by `ConvertFrom-Csv` irrespective of row count.\n\n```powershell\n# No custom object output, irrespective of row count.\n\n# Example 1a:\n@'\n\"P1\"\n\"\"\n'@ | ConvertFrom-Csv\n\n# Example 1b:\n@'\n\"P1\"\n\"\"\n\"\"\n\"\"\n'@ | ConvertFrom-Csv\n```\n\n#### Tests 2-3\n\nIn the following examples, a custom object is emitted for all rows _except the last_.\n\n```powershell\n# Partial custom object output. \n# Output for each row except the last.\n# If there is only one row, no object is emitted.\n\n# Example 2a:\n@'\n\"P1\",\"P2\"\n\"\",\n'@ | ConvertFrom-Csv # Nothing\n\n# Example 2b:\n@'\n\"P1\",\"P2\"\n\"\",\n\"\",\n'@ | ConvertFrom-Csv # 1 custom object\n\n# Example 3a:\n@'\n\"P1\",\"P2\"\n,\n'@ | ConvertFrom-Csv # Nothing\n\n# Example 3b:\n@'\n\"P1\",\"P2\"\n,\n,\n'@ | ConvertFrom-Csv # 1 custom object\n```\n\n#### Tests 4-6\n\nCustom object output is **correct** in following examples.\n\n```powershell\n# Custom object output in examples 4-6.\n\n# Example 4a:\n@'\n\"P1\",\"P2\"\n,\"\"\n'@ | ConvertFrom-Csv\n\n# Example 4b:\n@'\n\"P1\",\"P2\"\n,\"\"\n,\"\"\n'@ | ConvertFrom-Csv\n\n# Example 5a:\n@'\n\"P1\",\"P2\"\n\"\",\"\"\n'@ | ConvertFrom-Csv\n\n# Example 5b:\n@'\n\"P1\",\"P2\"\n\"\",\"\"\n\"\",\"\"\n'@ | ConvertFrom-Csv\n\n# Example 6a:\n@'\n\"P1\",\"P2\",\"P3\"\n,,\n'@ | ConvertFrom-Csv\n\n# Example 6b:\n@'\n\"P1\",\"P2\",\"P3\"\n,,\n,,\n'@ | ConvertFrom-Csv\n```\n\nNote:\n- As of PS v7.5.0, the CSV data above (examples 1-6) is all generated by `ConvertTo-Csv`, which may produce quoted (`\"\"`) _or_ unquoted empty fields by default. See: \n - https://github.com/PowerShell/PowerShell/issues/24699 \n- How `ConvertFrom-Csv` interprets unquoted empty fields is also inconsistent. See:\n - https://github.com/PowerShell/PowerShell/issues/17702\n\n### Expected behavior\n\n- Test 1: Should emit a custom object with a `P1` property.\n- Tests 2a \u0026 3a: Should emit a custom object with a `P1` and `P2` property.\n- Tests 2b \u0026 3b: Should emit 2 custom objects, each with a `P1` and `P2` property.\n\n### Actual behavior\n\n- Test 1: No custom object output.\n- Tests 2-3: Partial custom object output for all rows except the last.\n\n### Environment data\n\n```powershell\nName Value\n---- -----\nPSVersion 7.5.0-rc.1\nPSEdition Core\nGitCommitId 7.5.0-rc.1\nOS Microsoft Windows 10.0.19045\nPlatform Win32NT\nPSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}\nPSRemotingProtocolVersion 2.3\nSerializationVersion 1.1.0.1\nWSManStackVersion 3.0\n```","author":{"url":"https://github.com/surfingoldelephant","@type":"Person","name":"surfingoldelephant"},"datePublished":"2024-12-22T18:12:46.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":8},"url":"https://github.com/24698/PowerShell/issues/24698"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:cc5678a7-f07c-e29c-4d36-546eca0c7e7a |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | D2FE:1DF241:59538D:74B5D1:6A5BFDB2 |
| html-safe-nonce | a83123f14b721e94d46cc58071732de7dadf409e9382f536f5603192a56994d7 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJEMkZFOjFERjI0MTo1OTUzOEQ6NzRCNUQxOjZBNUJGREIyIiwidmlzaXRvcl9pZCI6IjQzNjYwMjg3Mjk5OTI2MDkyMDIiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | e08245fc27de1971ac86be9b20fea9155ed1379e50b8a993582d81828450ef51 |
| hovercard-subject-tag | issue:2754778472 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/PowerShell/PowerShell/24698/issue_layout |
| twitter:image | https://opengraph.githubassets.com/69ffa8de004ccc703aac3a6d773e1a0b550a9d60deced316f8e3b29bda4e763d/PowerShell/PowerShell/issues/24698 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/69ffa8de004ccc703aac3a6d773e1a0b550a9d60deced316f8e3b29bda4e763d/PowerShell/PowerShell/issues/24698 |
| og:image:alt | Prerequisites Write a descriptive title. Make sure you are able to repro it on the latest released version Search the existing issues. Refer to the FAQ. Refer to Differences between Windows PowerSh... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | surfingoldelephant |
| hostname | github.com |
| expected-hostname | github.com |
| None | 5290d7e14309ad1e76106a9c4237bd1041517e83ea182c8ab756752cb0c6940b |
| turbo-cache-control | no-preview |
| go-import | github.com/PowerShell/PowerShell git https://github.com/PowerShell/PowerShell.git |
| octolytics-dimension-user_id | 11524380 |
| octolytics-dimension-user_login | PowerShell |
| octolytics-dimension-repository_id | 49609581 |
| octolytics-dimension-repository_nwo | PowerShell/PowerShell |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 49609581 |
| octolytics-dimension-repository_network_root_nwo | PowerShell/PowerShell |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 9c975978430e9ad293956f2bbdaf153b1bd84a99 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width