我尝试使用 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 时有效,我想防止这种情况发生。
问题是
$driver
中的拼写错误,正确的名称是:
Microsoft Access 文本驱动程序(*.txt、*.csv)
驱动程序名称中扩展名之间的分隔符是 ,(逗号),而不是 ;(分号)。