2015-02-23 85 views
0

我想使用C#代码导入到MySql数据库的文本文件,但得到错误。 我的表结构是: Mysql database table在C#中的MySql命令“加载数据infile”执行错误

和我正在执行C#代码是:

fileQuery = 
       "load data infile '{0}' into table dgl.deliveries fields terminated by '\t' lines terminated by \r\n' (@ImagePath, Delivery_Note, Shipment_Number, @Delivery_Date, Deliver_To_Code, Deliver_To_Name, Sold_To_Code, Sold_To_Name, Material_Number, Doctype) set Delivery_Date = tr_to_date(@Delivery_Date, '%d/%m/%Y'), ImagePath = Concat('USERFILES/', @ImagePath)"; 

      string q = string.Format(fileQuery,fileName); 

      MySqlConnection conn = new MySqlConnection(dglConnection.ConnectionString); 
      MySqlCommand command = conn.CreateCommand(); 
      command.CommandText = q; 
      conn.Open(); 
      command.ExecuteNonQuery(); 

和错误是:

An exception of type 'MySql.Data.MySqlClient.MySqlException' occurred in MySql.Data.DLL but was not handled in user code 

Additional information: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%d/%m/%Y'), ImagePath = Concat('USERFILES/', @ImagePath)' at line 2 

以下是从源输入的线文件:

123.pdf 802661341 1061611 18/02/2015 00:00:00 22280 ABC LIMITED 22280 XYZ LIMITED 30679795 30744488 DELIVERY NOTE 1 
+0

您能否向我们介绍您尝试插入的实际数据,这是导致问题的原因? – Tommassiov 2015-02-23 10:10:24

+0

我已经添加了源文件行 – hotcoder 2015-02-23 10:13:11

+0

那么这个错误与'%d /%m /%Y'有关),ImagePath = Concat('USERFILES /',@ImagePath)'在第2行' – Tommassiov 2015-02-23 10:14:22

回答

0

你的问题是th在你的日期你从C#代码传递的是18/02/2015。 Mysql只能使用YYYY-MM-DD格式的日期。您需要调整这些数据,以便将其格式化为Mysql的方式,除非您希望将日期存储为日期。

我实际上写了一个存储过程,您可以使用(或至少知道需要做什么):Here is the link

另外,如果有疑问,请参阅dev.mysql它也是一个很好的资源。