当前我正在尝试使用 PowerShell 中的 ODBC 将分号分隔的
.csv
文件读入数据表中。
数据表没有正确的列,并且似乎忽略了分隔符。
我的架构.ini
[data.csv]
ColNameHeader=True
Format=Delimited(;)
代码:
$SourceFolder = [String]::Format("{0}\Data\Source\", $PWD)
$fileName = "data.csv"
$driver = "{Microsoft Access Text Driver (*.txt, *.csv)}"
$tableName = $fileName -replace ".csv",""
$readFileQuery = [String]::Format("SELECT * FROM [{0}]", $fileName)
$connectionString = [String]::Format("Driver={0};Dbq={1};Extensions=csv,txt;Extended Properties='FMT=Delimited(;);HDR=Yes'", $driver, $SourceFolder)
$odbcConnection = New-Object System.Data.Odbc.OdbcConnection($connectionString)
$odbcConnection.Open()
$odbcCommand = New-Object System.Data.Odbc.OdbcCommand($readFileQuery, $odbcConnection)
$odbcDataAdapter = New-Object System.Data.Odbc.OdbcDataAdapter
$dataSet.Tables.Add($tableName)
$odbcDataAdapter.SelectCommand = $odbcCommand
$odbcDataAdapter.Fill($dataSet.Tables[$tableName]) | Out-Null
$dataSet.Tables[$tableName]
我更改了连接字符串以添加和删除格式、fmt(带或不带字符)等各种扩展属性。在注册表中对分隔符进行硬编码,将其设置为 Schema.ini 中的各种值。
由于.csv文件的大小,用逗号替换分号是不合理的。
是否需要在 PowerShell 中? 如何将 CSV 文件读入 .NET 数据表
https://www.codeproject.com/Articles/11698/A-Portable-and-Efficient-Generic-Parser-for-Flat-F
如果必须在 PowerShell 中,则需要检查以下内容:
Schema.ini
必须位于与您尝试读取的 .csv 文件相同的目录中。{Microsoft Access Text Driver (*.txt, *.csv)}
可能有问题,请确保其安装和配置正确。