【问题标题】:Error in Load Data infile query in C#在 C# 中加载数据 infile 查询时出错
【发布时间】:2012-07-23 20:27:31
【问题描述】:

以下代码有问题:-

 private void btnUpload_Click(object sender, EventArgs e)
    {

        string nm = txtFilename.Text;
        string qry = "LOAD DATA INFILE 'D:\\HHTFiles\\" + nm + "' INTO TABLE `table1`.`location`FIELDS TERMINATED BY '-->'LINES TERMINATED BY '\r\n'(Barcode,BinLoc);";
        cmd = new OdbcCommand(qry, con);
        int i = cmd.ExecuteNonQuery();
        if (i > 0)
        {
            MessageBox.Show(" File loaded successfully...");
        }


    }

private void btnBrowse_Click(object sender, EventArgs e)
    {
        OpenFileDialog openfiledailog1 = new OpenFileDialog();
        openfiledailog1.InitialDirectory = "D:\\HHTFiles\\";
        openfiledailog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
        openfiledailog1.FilterIndex = 2;
        openfiledailog1.RestoreDirectory = true;

        if (openfiledailog1.ShowDialog() == DialogResult.OK)
        {
            try
            {
                if ((openfiledailog1.OpenFile()) != null)
                {

                     txtFilename.Text = openfiledailog1.SafeFileName.ToString();

                }
            }
            catch (Exception ex)
            {
              MessageBox.Show("Error: Could not read file from disk. Original error: "      + ex.Message);
            }
        }
    }

如果我在查询中给出完整的文件路径,它可以正常运行:- string qry = "LOAD DATA INFILE 'D:\HHTFiles\ ABC.txt' INTO TABLE table1.locationFIELDS TERMINATED BY '-->'LINES TERMINATED BY '\r\n'(Barcode,BinLoc);" ; 但是当文件路径以字符串变量传递时会引发错误。

错误:- 错误 [HY000] [MySQL][ODBC 5.1 驱动程序][mysqld-5.1.48-community] 找不到文件 'D:HHTFilesABC.txt' (Errcode: 2)

【问题讨论】:

    标签: c# mysql


    【解决方案1】:

    @Aghilas 它得到了解决 :) 虽然我不确定为什么我首先会出错。无论如何,我只是将 '\\' 替换为 '/' 并且运行良好。

            string nm = txtFilename.Text;
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.Append("LOAD DATA INFILE ");
            stringBuilder.Append(Path.Combine("'D:/HHTFiles/", nm));
            stringBuilder.Append("' INTO TABLE `table1`.`location`FIELDS TERMINATED BY '-->'LINES TERMINATED BY '\r\n'(Barcode,BinLoc);");
    

    【讨论】:

      【解决方案2】:

      尝试使用 Path.Combine

      Path.Combine("D:\\HHTFiles\\", nm); 
      

      并使用 StringBuilder 来构建您的查询

       StringBuilder stringBuilder = new StringBuilder();
       stringBuilder.Append("LOAD DATA INFILE ");
       stringBuilder.Append(Path.Combine("D:\\HHTFiles\\", nm));
       stringBuilder.Append(" INTO TABLE table1.location");
       stringBuilder.Append(" FIELDS TERMINATED BY '-->'"); 
       stringBuilder.Append(" LINES TERMINATED BY (");              
       stringBuilder.Append(Barcode.BinLoc);
       stringBuilder.Append(")");
      
       string qry = stringBuilder.ToString();
      

      【讨论】:

      • 感谢您的快速回复。我尝试了您的代码,但仍然收到较早的错误。错误 [HY000] [MySQL][ODBC 5.1 驱动程序][mysqld-5.1.48-community]找不到文件“D:HHTFilesABC.txt”(错误代码:2)
      • 很高兴回复您,验证路径上是否存在 D:HHTFiles/ABC.txt
      • 是的,ABC.txt文件存在于指定的路径中。我什至在上面的代码上应用了断点。它显示qry="LOAD DATA INFILE 'D:\\HHTFiles\\ABC.txt ' INTO TABLE table1.locationFIELDS TERMINATED BY '-->'LINES TERMINATED BY '\r\n'(Barcode,BinLoc);"。如果我在 Mysql 编辑器上运行此查询,它运行良好且 1 行受到影响。但是相同的查询在 C# 中不起作用。我很困惑...
      • Hello RookieCoder 尝试使用新查询我更新它们,测试并告诉我响应
      猜你喜欢
      • 2011-10-09
      • 2013-01-09
      • 2013-10-02
      • 2018-05-18
      • 2010-10-22
      • 1970-01-01
      • 1970-01-01
      • 2012-05-26
      • 1970-01-01
      相关资源
      最近更新 更多