查询csv文件时www.example.com vb中FROM子句语法错误ASP.net

zvokhttg  于 2023-06-19  发布在  .NET
关注(0)|答案(2)|浏览(106)

在我的ASP.NET应用程序(使用vb.net)中,当使用OLEDB连接查询csv文件时,我得到错误“syntax error in FROM clause”。

connString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & 
   Server.MapPath(strFolderPath) & ";Extended 
   Properties=""Text;HDR=Yes;FMT=Delimited(,)"";"

   conn = New OleDbConnection(connString)
   query = "SELECT * FROM " & FilePath
   'File path is C:\DEV\Uploads\file.csv
   cmd = New OleDbCommand(query, conn)
   da = New OleDbDataAdapter(cmd)
   ds = New DataSet()
   da.Fill(ds, "Putaway") 'here throwing error

请问如何解决。

bogh5gae

bogh5gae1#

对于初学者,不要使用OLEDB读取CSV文件。CSV文件只是文本文件,值由逗号分隔。仅此而已您可以将数据作为文本读取,或者使用像CsvHelper这样的库来解析CSV文件,甚至可以将它们 Package 在DataReader中。
例如,使用CsvHelper的CsvDataReader类,您可以将代码替换为:

Using reader As New StreamReader("path\\to\\file.csv")
    Using csv As new CsvReader(reader, CultureInfo.InvariantCulture)
        Using dr As new CsvDataReader(csv)
           Dim dt As new DataTable()
            dt.Load(dr)
            ...
        End Using
    End Using
End Using

这段代码在Windows和Linux上都适用,适用于32位和64位应用程序
此代码中使用的Access驱动程序有几个问题,在Web应用程序中应避免使用。创建它是为了允许Office应用程序读取Access和Excel和CSV文件,而不是用于一般用途。CSV文件以一种奇特的方式得到支持
1.它需要安装ACE引擎

  1. OLEDB只能在Windows上工作,所以在ASP.NET Core中根本不能工作
  2. ACE引擎必须与Web应用的位数(32/64位)匹配。更糟糕的是,你不能同时安装两个版本。
  3. ACE的位数必须与任何已安装的Office应用程序相匹配。
    该驱动程序将文件夹视为“数据库”,并将该文件夹中的文件名视为表名。这意味着FilePath必须是file.csv,而不是完整路径C:\DEV\Uploads\file.csv
dly7yett

dly7yett2#

我解决了直接使用csv文件名而不使用fullpath的问题。

query = "SELECT * FROM file.csv"
 'File path is C:\DEV\Uploads\file.csv

相关问题