使用 ODBC 从 PowerShell 读取 .csv

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

我尝试使用 PowerShell 读取 .csv 文件,但出现错误:

[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

这是我的代码,我似乎无法解决问题:

$SourceFolder = [String]::Format("{0}\Data\Source\", ".")
$driver = "Microsoft Access Text Driver (*.txt;*.csv)"
$connectionString = [String]::Format("Driver={0};Dbq={1};Extensions=csv,txt;", $driver, $SourceFolder)
$odbcConnection = New-Object System.Data.Odbc.OdbcConnection($connectionString)
$odbcConnection.Open()

Get-OdbcDriver -Name "Microsoft Access Text Driver (*.txt, *.csv)"
显示正确的驱动程序

Name      : Microsoft Access Text Driver (*.txt, *.csv)
Platform  : 64-bit
Attribute : {[SQLLevel, 0], [APILevel, 1], [Setup, C:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX64\Microsoft Shared\Office16\ACEODTXT.DLL], [FileUsage, 2]…}

我还尝试创建一个 schema.ini,尽管这似乎稍后会变得相关并且不会影响此错误。 我已经重新启动了几次。 在

{}
内指定驱动程序没有什么区别。 使用
.csv
文件名代替
Dbq
目录没有什么区别。绝对路径而不是相对路径会产生相同的错误。

它似乎在使用 DSN 时有效,我想防止这种情况发生。

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

问题是

$driver
中的拼写错误,正确的名称是:

Microsoft Access 文本驱动程序(*.txt、*.csv)

驱动程序名称中扩展名之间的分隔符是 ,(逗号),而不是 ;(分号)。

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