【发布时间】:2018-07-01 23:42:55
【问题描述】:
我需要从网络位置下载 CSV 文件并将其导入 MySQL 表。最简单的方法是将其复制到 MySQL 位置并使用 LOAD DATA。我是使用这个命令手动完成的:
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 会抱怨日期格式不正确。
因此,由于这将是常规操作,因此我尝试将其放入可由我的进程调用的存储过程中,但不允许在存储过程中使用 LOAD DATA。
所以我想我只需使用 MySQL Net/Connector 从我的进程发送原始命令:
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 文件并单独插入记录?
【问题讨论】:
-
您需要在列标识符周围使用`
-
所以我试过了。现在我得到 MySqlException: Unknown column '@PostedDate' in 'field list'
标签: c# mysql mysql-connector