C# MySQL:如何在SQL语句中包含@,而不将其解释为参数?
我需要从网络位置下载CSV文件并将其导入MySQL表。最简单的方法是将其复制到MySQL位置并使用加载数据。我使用以下命令手动执行此操作:C# MySQL:如何在SQL语句中包含@,而不将其解释为参数?,c#,mysql,mysql-connector,C#,Mysql,Mysql Connector,我需要从网络位置下载CSV文件并将其导入MySQL表。最简单的方法是将其复制到MySQL位置并使用加载数据。我使用以下命令手动执行此操作: LOAD DATA INFILE 'Transactions.CSV' INTO TABLE tmpImport FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 ROWS (AccountDesignator,@PostedDate,Seri
LOAD DATA INFILE 'Transactions.CSV'
INTO TABLE tmpImport
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 ROWS
(AccountDesignator,@PostedDate,SerialNum,Description,Amount,CrDr)
SET PostedDate = STR_TO_DATE(@PostedDate, '%m/%d/%Y');
我不得不添加@PostedDate,因为没有它,MySQL抱怨日期格式不正确
由于这将是一个常规操作,所以我尝试将其放入一个可由进程调用的存储过程中,但不允许在存储过程中使用加载数据
所以我想我应该使用MySQL Net/Connector从进程中发送raw命令:
using (MySqlCommand cmd = new MySqlCommand(sql, new MySqlConnection("server=theServer; uid=theUid; pwd=thePwd; database=theDatabase; SslMode=none;")))
{
cmd.Connection.Open();
rows = cmd.ExecuteNonQuery();
cmd.Connection.Close();
}
但当我尝试运行时,会出现以下错误:
MySqlException:必须定义参数'@PostedDate'
这有什么办法吗?还是我必须读取CSV文件并分别插入记录?您有两个选择
1) 在加载文件之前,在.csv中格式化日期
2) 将该列更改为varchar。加载文件,然后使用STR_TO_DATE更改为所需的日期格式。然后,如果必须将列类型定义为一,则将其更改回最新。我通常不会将日期字段用作VARCHAR
这两个选项都比您认为最后可能需要做的要好您需要在列标识周围使用`所以我尝试过了。现在我得到了MySqlException:“字段列表”中的未知列“@PostedDate”