读取 ODBC 以分号分隔的 .csv

问题描述 投票:0回答:1

当前我正在尝试使用 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文件的大小,用逗号替换分号是不合理的。

P.s.这是 使用 ODBC 从 PowerShell 读取 .csv 的后续内容

powershell csv odbc connection-string
1个回答
0
投票

是否需要在 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)}
    可能有问题,请确保其安装和配置正确。
  • 您在注册表中硬编码了分隔符。检查以确保它没有被覆盖。

https://www.cdata.com/kb/tech/csv-odbc-powershell.rst#:~:text=To%20retrieve%20CSV%20data%20in%20PowerShell%2C%20call%20the,初始化%20the %20OdbcCommand%20object%20and%20then%20call%20ExecuteNonQuery.

© www.soinside.com 2019 - 2024. All rights reserved.