C# MySQL:如何在SQL语句中包含@,而不将其解释为参数?

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

我需要从网络位置下载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,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”