2015-07-08 2 views
3

работа с MySQL: MySQL Ver 14,14 Distrib 5.6.24, для Debian-Linux-гну (x86_64) с использованием EditLine оберткиНАГРУЗКИ ошибки DATA LOCAL INFILE Синтаксис

Я пытаюсь хроны работы LOAD DATA LOCAL INFILE для запуска два раза в день. Мне очень сложно сортировать мой синтаксис. В настоящее время у меня есть это:

#!/bin/bash 

mysql --user=dbuser --password="dbuserpassword" --database=DSDB --local-infile --execute " 

LOAD DATA LOCAL INFILE '/mnt/hqsccm/TSReport.CSV' 
INTO TABLE temptable 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\r\n' 
(@compname,@imgdate,@imgname,@imgsttime,@imgendtime,@tottime,@engname,@engemail) set [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected]; 

TRUNCATE HQSCCMmachines; 

INSERT INTO HQSCCMmachines (ComputerName,ImagingDate,ImageName,ImageSTartTime,ImageEndTime,TotalTime,EngineerName,EngineerEmail) 
SELECT (ComputerName,ImagingDate,ImageName,ImageSTartTime,ImageEndTime,TotalTime,EngineerName,EngineerEmail) 
    FROM temptable 

TRUNCATE temptable; 
" 

И я получаю это:

ERROR 1064 (42000) at line 11: 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 'temptable' at line 5 

Помощь?

+0

Вы можете разместить первые 2-3 строки вашего CSV файл 'TSReport.CSV'? –

+0

Я думаю, что проблема заключается в том, что вам нужно добавить точку с запятой после 'FROM temptable' во второй-последней строке кода. – RTBarnard

ответ

1

Это должно работать (если файл и таблица существует) -

LOAD DATA LOCAL INFILE '/mnt/hqsccm/TSReport.CSV' 
INTO TABLE temptable 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\r\n' 
(@compname,@imgdate,@imgname,@imgsttime,@imgendtime,@tottime,@engname,@engemail) set [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected]; 

TRUNCATE HQSCCMmachines; 

INSERT INTO HQSCCMmachines (ComputerName,ImagingDate,ImageName,ImageSTartTime,ImageEndTime,TotalTime,EngineerName,EngineerEmail) 
SELECT ComputerName,ImagingDate,ImageName,ImageSTartTime,ImageEndTime,TotalTime,EngineerName,EngineerEmail 
    FROM temptable; 

TRUNCATE temptable; 
+0

Теперь я получаю «ERROR 1241 (21000) в строке 10: Операнд должен содержать 1 столбец« Я вынул переменные. – starkruzr

+0

Я отредактировал ответ. Попробуйте сейчас. – Abhishek

Смежные вопросы