【问题标题】:LOAD DATA INFILE with variables使用变量加载数据输入文件
【发布时间】:2012-10-01 19:54:10
【问题描述】:

我试图将 LOAD DATA INFILE 用作一个复杂的过程,但似乎无法完成。然后我尝试了将代码嵌入到应用程序本身的常用方法,

conn = new MySqlConnection(connStr);
conn.Open();
MySqlCommand cmd = new MySqlCommand();
cmd = conn.CreateCommand();
string tableName = getTableName(serverName);
string query = "LOAD DATA INFILE '" + fileName + "'INTO TABLE "+ tableName +" FIELDS TERMINATED BY '"+colSep+"' ENCLOSED BY '"+colEncap+"' ESCAPED BY '"+colEncap+"'LINES TERMINATED BY '"+colNewLine+"' ("+colUpFormat+");";
cmd.CommandText = query;
cmd.ExecuteNonQuery();
conn.Close();

保存在字符串变量查询中的生成查询是,

        LOAD DATA INFILE 'data_file.csv'INTO TABLE tbl_shadowserver_bot_geo FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '"'LINES TERMINATED BY '\n' (timestamp,ip,port,asn,@dummy,@dummy,@dummy,@dummy,@dummy,@dummy,url,agent,@dummy,@dummy,@dummy,@dummy,@dummy,@dummy,@dummy,@dummy,@dummy,@dummy,@dummy);

但是现在当我运行程序时,它给出了一个错误提示,

        MySQLException(0x80004005) Parameter @dummy must be defined first.

我不知道如何解决这个问题,但是当我直接在 mysql 本身上使用相同的查询时,它工作正常。请帮助我..非常感谢你:)

【问题讨论】:

  • 我注意到您的查询 (.csv'INTO) 和 (ESCAPED BY '"'LINES) 中缺少一些空格。请检查您的原始查询是否属于这种情况,或者它是否只是错误发布在这里。
  • 嗨,谢谢您的回复,但这不是问题:) .. 我找到了解决方案

标签: c# mysql load-data-infile


【解决方案1】:

我自己找到了解决办法,就是设置这个条件,

      Allow User Variables=true;

在允许在查询中使用@parameter 值的连接字符串中:)

感谢您的回复:)

【讨论】:

    【解决方案2】:

    我也遇到了这个问题,然后我创建了批量插入脚本并使用 C#.net 代码运行它

    【讨论】:

    • okey.. 非常感谢你 :) 我会试试你的解决方案。 :)
    • 当然..我会在完成对您给出的建议的测试后。再次感谢:)
    • 这根本不是真的,可以从代码中使用 LOAD DATA INFILE。
    • 我用代码试过了,但它不起作用..你能提供任何做同样的链接或代码示例吗..
    • 好吧,你的问题一定是很长的路要走,似乎还有另一个简单的解决方案..我刚刚找到它并将其发布为答案:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-26
    • 1970-01-01
    • 2014-12-03
    • 1970-01-01
    • 2015-02-09
    相关资源
    最近更新 更多