我正在尝试将csv中的数据加载到mySQL中。列的顺序不正确,有些被跳过。日期格式也不正确
数据如下:
日期,打开,高,低,关闭,调整关闭,交易量 2006年4月3日,10.01,10.01,10.01,10.01,7.236886,0 4/4 / 2006,10.07,10.07,10.07,10.07,7.280261,0
我的代码如下:
$query = <<<eof
LOAD DATA INFILE '$filename'
INTO TABLE `$table`
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(@date_str, @open, @high, @low, @close, @adjclose, @volume)
SET `date` = STR_TO_DATE(@date_str, '%c/%e/%Y'),
SET symbol = $symbol,
SET nav = @close;
eof;
我得到的错误是:
Sql错误:加载数据文件'D:/Website/finance/csv/ABNDX.csv'到 表
mutual_fund_history
的字段以','结尾 BY''忽略1行(@ date_str,@ open,@ high,@ low,@ close, @ adjclose,@ volume)SETdate
= STR_TO_DATE(@date_str,'%c /%e /%Y'), SET符号= ABNDX,SET导航= @close; SQL错误#:1064-您有一个 您的SQL语法错误;检查与您的手册相对应的手册 MySQL服务器版本,可在'SET symbol =附近使用正确的语法 ABNDX,在第8行设置SET nav = @close'
我脚。感谢您的帮助。
更新:我尝试将单引号放在$ symbol周围,因为它是一个字符串,但仍然会出现错误。
请注意,我已按照this post进行指导。
答案 0 :(得分:0)
好吧,是从那篇文章中得到的。只能使用一个SET语句,并且不同的变量必须用逗号分隔,因此应为:
$query = <<<eof
LOAD DATA INFILE '$filename'
INTO TABLE `$table`
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(@date_str, @open, @high, @low, @close, @adjclose, @volume)
SET `date` = STR_TO_DATE(@date_str, '%c/%e/%Y'),
symbol = '$symbol',
nav = @close;
eof;