第 1 行的错误 1083 (42000):使用 mysql LOAD 时字段分隔符参数不是预期的

ERROR 1083 (42000) at line 1: Field separator argument is not what is expected when using mysql LOAD

我正在尝试通过 shell 提示使用 mysql 加载。我想将 CSV 文件直接加载到数据库中。

mysql -u root -p -h mysql -e "LOAD DATA INFILE 'Subscriber.csv' INTO TABLE temp_data FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n'IGNORE 1 ROWS" psi

我遇到错误 ERROR 1083 (42000) at line 1: Field separator argument is not what is expected

下面是我的 CSV 文件

misdn,city,age,gender 771XXXXXX,MUTOKO,24,MALE 771XXXXXX,MUTOKO,32,MALE 771XXXXXX,MUTOKO,37,Male 771XXXXXX,MUTOKO,36,MALE 771XXXXXX,MUTOKO,25,Male 771XXXXXX,HWEDZA,26,MALE 771XXXXXX,HWEDZA,33,MALE 771XXXXXX,MUTOKO,26,MALE 771XXXXXX,HWEDZA,34,MALE 771XXXXXX,HWEDZA,34,MALE 771XXXXXX,MUTOKO,21,MALE 771XXXXXX,MUTOKO,22,MALE 771XXXXXX,MUTOKO,30,MALE 771XXXXXX,MUTOKO,28,Male 771XXXXXX,MUTOKO,33,Male 771XXXXXX,MUTOKO,23,Male 771XXXXXX,ZVISHAVANE,31,Male 771XXXXXX,ZVISHAVANE,39,MALE

请帮忙,我做错了什么?

您使用了 ENCLOSED BY '"',但您的字段根本不包含双引号。我认为你应该使用 OPTIONALLY ENCLOSED BY '"'。试试这个版本:

mysql -u root -p -h mysql -e "LOAD DATA INFILE 'Subscriber.csv'
    INTO TABLE temp_data
    FIELDS TERMINATED BY ','
    OPTIONALLY ENCLOSED BY '"'
    LINES TERMINATED BY '\n'IGNORE 1 ROWS" psi

或者,如果您确定任何字段都不会有双引号,则可以完全删除 ENCLOSED BY 子句。