我有一个 .CSV 文件,该文件是使用 SQL Server 的 BCP 命令行 BULK-COPY 实用程序创建的,用于转储一堆数据库表。
由于我想使用 Powershell 导入这些 .CSV 文件并使用 format-table cmdlet 将它们转换为漂亮的报告,因此我遇到了列排列等问题。因为某些列包含来自 SQL Server 的 NULL。我没有选择首先从 SQL Server 转换 NULL;由于我将表导出为 CSV 的方式。
因此,我想先从 .CSV 文件中删除所有 NULL,然后再尝试将其通过管道传输到格式表 cmdlet。
我的基本代码如下:
$CSV=import-csv "c:\temp\tablename.csv"
$CSV | format-table -autosize | out-string -width 4096 >"C:\TEMP\tablename.txt"
我尝试过这样做:
$CSV | -replace($null,"") | format-table -autosize | out-string -width 4096 > "C:\TEMP\tablename.txt"
但我仍然得到 NULL。
有谁知道如何从我的 CSV 中删除 NULL,以便我可以显示一个漂亮的表格报告。我想将这些 .TXT 报告导入 SVN,但 NULL 会给我带来问题,而且它会扭曲报告。
十六进制编辑器中显示的 CSV 文件:
00000EA0h: 31 38 39 2C 31 31 39 2C 37 35 29 2C 77 68 69 74 189,119,75),whit
00000EB0h: 65 2C 77 68 69 74 65 2C 2C 2C 2C 2C 2C 2C 2C 2C e,white,,,,,,,,,
00000EC0h: 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C 2C ,,,,,,,,,,,,,,,,
00000ED0h: 2C 2C 0D 0A 61 63 62 34 33 5F 30 31 2C 4F 4E 2C ,,..acb43_01,ON,
00000EE0h: 00 2C 32 37 2C 39 39 2C 2F 61 63 62 34 33 5F 30 .,27,99,/acb43_0
00000EF0h: 31 2F 34 33 62 61 6C 61 6E 63 65 73 2E 67 69 66 1/43balances.gif
注意 EE0h 处的第一个字符是 NULL,0x00。
最佳答案
经过一番尝试后,我终于发现这个语法是有效的:
(Get-Content "C:\temp\tablename.csv") -replace "`0", "" | Set-Content "C:\temp\tablename.csv"
关于sql-server - 如何从 PowerShell 中的对象中删除 NULL 字符 (0x00),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9863455/