有没有理由LOAD DATA不接受管道分隔文件

时间:2015-03-01 20:24:41

标签: mysql etl

当我尝试运行时:



LOAD DATA INFILE 'MyFile.txt'
INTO TABLE CLIMATE_DATA
FIELDS TERMINATED BY '|'
LINES TERMINATED BY '\r\n'
(
	STATION_ID,
	WBAN_ID,
	DATE,
	MEAN_TEMP,
	NUM_OBSERVATIONS_TEMP,
	MEAN_DEW_POINT,
	NUM_OBSERVATIONS_DEW_POINT,
	MEAN_SEA_LEVEL_PRESSURE,
	NUM_OBSERVATIONS_SEA_LEVEL_PRESSURE,
	MEAN_STATION_PRESSURE,
	NUM_OBSERVATIONS_STATION_PRESSURE,
	MEAN_VISIBILITY,
	NUM_OBSERVATIONS_MEAN_VISIBILITY,
	MEAN_WIND_SPEED,
	NUM_OBSERVATIONS_WIND_SPEED,
	MAX_WIND_SPEED,
	MAX_WIND_GUST,
	MAX_TEMP,
	MAX_TEMP_FLAG,
	MIN_TEMP,
	MIN_TEMP_FLAG,
	TOTAL_PRECIPITATION,
	TOTAL_PRECIPITATION_FLAG,
	SNOW_DEPTH,
	WEATHER_PHENOMENON 
)
IGNORE 1 LINES;




我得到:"错误:您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以获得正确的语法,以便在''''在第3行"

它可以正常使用','。语法似乎是正确的。不确定我做错了什么。

2 个答案:

答案 0 :(得分:1)

只是想指出“IGNORE 1 LINES”需要在你的“LINES TERMINATED BY ...”和表格字段“(STATION_ID,......”)之间。 关于你的代码:

LOAD DATA INFILE 'MyFile.txt'
INTO TABLE CLIMATE_DATA
FIELDS TERMINATED BY '|'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES <<--place ignore here
(
    STATION_ID,
    WBAN_ID,
    DATE,
    MEAN_TEMP,
    NUM_OBSERVATIONS_TEMP,
    MEAN_DEW_POINT,
    NUM_OBSERVATIONS_DEW_POINT,
    MEAN_SEA_LEVEL_PRESSURE,
    NUM_OBSERVATIONS_SEA_LEVEL_PRESSURE,
    MEAN_STATION_PRESSURE,
    NUM_OBSERVATIONS_STATION_PRESSURE,
    MEAN_VISIBILITY,
    NUM_OBSERVATIONS_MEAN_VISIBILITY,
    MEAN_WIND_SPEED,
    NUM_OBSERVATIONS_WIND_SPEED,
    MAX_WIND_SPEED,
    MAX_WIND_GUST,
    MAX_TEMP,
    MAX_TEMP_FLAG,
    MIN_TEMP,
    MIN_TEMP_FLAG,
    TOTAL_PRECIPITATION,
    TOTAL_PRECIPITATION_FLAG,
    SNOW_DEPTH,
    WEATHER_PHENOMENON 
);

当我运行上述内容时,我收到以下错误:

  

“ERROR 1064(42000):您的SQL语法出错;请查看与您的MySQL服务器版本对应的手册,以便在第32行”IGNORE 1 LINES“附近使用正确的语法”

我认为你没有在剪贴板中复制完整的错误。

另外,您可能想尝试使用“LOAD DATA LOCAL INFILE”,在登录mysql提示符时,您可能需要使用--local-infile参数,这是一个很好的示例这是在error when I import local data infile

中描述的

希望这有帮助。

答案 1 :(得分:0)

如果有人想要使用mysqlimport导入文件并将PIPE作为分隔符。

以这种方式使用命令

mysqlimport --ignore-lines=1  --local -u root -p seo D:\SEO.txt --fields-terminated-by="|"