MySQL文件或目录未找到ODBC

时间:2016-07-02 18:34:15

标签: mysql vb.net file directory

我正在编写一个程序,通过MySQL处理数据转换,并处理大文件。

made a question earlier关于我遇到的另一个问题,当我尝试某人的答案时,我收到了以下错误

[MySQL][ODBC 5.3(a) Driver][mysqld-5.5.5-10.1.9-MariaDB]File 'C:\xampp\mysql\data\ingram\' not found (Errcode: 2 "No such file or directory")

我确信该目录存在,当我将代码更改为其原始状态时,它可以正常工作。

那里发生了什么?

这是给我提问题的代码

Cmd.CommandText = String.Format("LOAD DATA INFILE ""{0}"" IGNORE INTO TABLE libros_nueva FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '""' ESCAPED BY '""' LINES TERMINATED BY '\r\n';", filepath)
 Cmd.Execute()

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

鉴于错误消息的显着部分:

  

文件' C:\ xampp \ mysql \ data \ ingram \'找不到(错误代码:2"没有这样的文件或目录")

我很确定在需要完整路径和文件名时只传递路径。它回显的路径中肯定没有文件名。

你可以向我解释一下[MySqlBulkLoader]吗?

另一种导入方式是使用MySqlBulkLoader命名空间中的MySql.Data.MySqlClient

    ' columns in the order they appear in the CSV file:
    Dim cols As String() = {"Name", "Descr", "`Group`", "ValueA",
                        "Bird", "Fish", "zDate", "Color", "Active"}
    Dim csvFile As String = "C:\Temp\mysqlImport.csv"
    Dim rows As Int32

    Using dbcon As New MySqlConnection(MySQLConnStr)
        Dim bulk = New MySqlBulkLoader(dbcon)

        bulk.TableName = "importer"    
        bulk.FieldTerminator = ","      ' this is a CSV
        bulk.LineTerminator = "\r\n"    ' == CR/LF
        bulk.FileName = csvFile         ' full file path name to CSV 
        bulk.NumberOfLinesToSkip = 0    ' has a header?

        bulk.Columns.Clear()
        For Each s In cols
            bulk.Columns.Add(s)         ' tell MySQL the order
        Next

        rows = bulk.Load()              ' Make it so.
    End Using

导入100k行的次数:3619,2719和2987 ms。根据您的上一个问题,还有一种LoadAsync方法可能会引起您的兴趣。

如果有数据转换在插入之前执行CSVHelper可以提供一种简单的方法来加载记录,这样你就可以做任何需要做的事情,然后使用普通的SQL插入来更新数据库。

部分this answer显示使用CSVHelper以50k的批量导入Access,这非常快。