MySql:从没有尾随逗号/分隔符的 .csv 文件加载数据

问题描述 投票:0回答:1

我正在尝试将 .csv 文件中的数据加载到

mysql
表中

这些是我的 .csv 文件的内容(这里行的格式是为了更好的可读性,文件的格式不是这样的)

Date       ,Band             ,ConcertName                                   ,Country ,City   ,Location                   ,LocationAddress
2023-05-28 ,Ozzy Osbourne    ,No More Tours 2 - Special Guest: Judas Priest ,Germany ,Berlin ,Mercedes-Benz Arena Berlin ,"Mercedes-Platz 1, 10243 Berlin-Friedrichshain"
2023-05-08 ,Elton John       ,Farewell Yellow Brick Road Tour 2023          ,Germany ,Berlin ,Mercedes-Benz Arena Berlin ,"Mercedes-Platz 1 10243 Berlin-Friedrichshain"
2023-05-26 ,Hans Zimmer Live ,Europe Tour 2023                              ,Germany ,Berlin ,Mercedes-Benz Arena Berlin ,"Mercedes-Platz 1, 10243 Berlin-Friedrichshain"
2023-07-07 ,Depeche Mode     ,Memento Mori World Tour 2023                  ,Germany ,Berlin ,Olympiastadion Berlin      ,"Olympischer Platz 3, 14053 Berlin-Charlottenburg"

这是用于加载数据的查询

LOAD DATA LOCAL 
    INFILE 'temp.csv' 
    INTO TABLE concerts2 
    FIELDS 
        TERMINATED BY ',' 
        ENCLOSED BY '"'
    LINES 
        TERMINATED BY '\n'
    IGNORE 1 ROWS 
    
    (`Date`,`Band`,`ConcertName`,`Country`,`City`,`Location`,`LocationAddress`)
;

查询已成功执行,但未从.csv文件中正确读取数据。

mysql> select * from concerts2;
+----+------------+---------------+-----------------------------------------------+---------+--------+----------------------------+------------------------------------------------------------------------------------------------------+
| id | Date       | Band          | ConcertName                                   | Country | City   | Location                   | LocationAddress
                              |
+----+------------+---------------+-----------------------------------------------+---------+--------+----------------------------+------------------------------------------------------------------------------------------------------+
|  1 | 2023-05-28 | Ozzy Osbourne | No More Tours 2 - Special Guest: Judas Priest | Germany | Berlin | Mercedes-Benz Arena Berlin | "Mercedes-Platz 1, 10243 Berlin-Friedrichshain"
2023-05-08,Elton John,Farewell Yellow Brick Road To |
+----+------------+---------------+-----------------------------------------------+---------+--------+----------------------------+------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

但是如果我在 .csv 文件中的每一行添加尾随逗号

Date       ,Band             ,ConcertName                                   ,Country ,City   ,Location                   ,LocationAddress                                    ,
2023-05-28 ,Ozzy Osbourne    ,No More Tours 2 - Special Guest: Judas Priest ,Germany ,Berlin ,Mercedes-Benz Arena Berlin ,"Mercedes-Platz 1, 10243 Berlin-Friedrichshain"    ,
2023-05-08 ,Elton John       ,Farewell Yellow Brick Road Tour 2023          ,Germany ,Berlin ,Mercedes-Benz Arena Berlin ,"Mercedes-Platz 1 10243 Berlin-Friedrichshain"     ,
2023-05-26 ,Hans Zimmer Live ,Europe Tour 2023                              ,Germany ,Berlin ,Mercedes-Benz Arena Berlin ,"Mercedes-Platz 1, 10243 Berlin-Friedrichshain"    ,
2023-07-07 ,Depeche Mode     ,Memento Mori World Tour 2023                  ,Germany ,Berlin ,Olympiastadion Berlin      ,"Olympischer Platz 3, 14053 Berlin-Charlottenburg" ,

数据正确读取并写入表中

mysql> select * from concerts2;
+----+------------+------------------+-----------------------------------------------+---------+--------+----------------------------+--------------------------------------------------+
| id | Date       | Band             | ConcertName                                   | Country | City   | Location                   | LocationAddress                                  |
+----+------------+------------------+-----------------------------------------------+---------+--------+----------------------------+--------------------------------------------------+
|  1 | 2023-05-28 | Ozzy Osbourne    | No More Tours 2 - Special Guest: Judas Priest | Germany | Berlin | Mercedes-Benz Arena Berlin | Mercedes-Platz 1, 10243 Berlin-Friedrichshain    |
|  2 | 2023-05-08 | Elton John       | Farewell Yellow Brick Road Tour 2023          | Germany | Berlin | Mercedes-Benz Arena Berlin | Mercedes-Platz 1 10243 Berlin-Friedrichshain     |
|  3 | 2023-05-26 | Hans Zimmer Live | Europe Tour 2023                              | Germany | Berlin | Mercedes-Benz Arena Berlin | Mercedes-Platz 1, 10243 Berlin-Friedrichshain    |
|  4 | 2023-07-07 | Depeche Mode     | Memento Mori World Tour 2023                  | Germany | Berlin | Olympiastadion Berlin      | Olympischer Platz 3, 14053 Berlin-Charlottenburg |
+----+------------+------------------+-----------------------------------------------+---------+--------+----------------------------+--------------------------------------------------+

如何修改查询以正确读取原始 .csv 文件中的数据,且其中不包含尾随逗号。

我无法修改原始 .csv 文件。解决方案必须是 sql 查询或更改

mysql
的设置/配置

sql mysql csv
1个回答
0
投票

上传中出现逗号的问题可能源于对包含逗号的字段的错误处理。当您指定FIELDS ENCLOSED BY '"'(或者没有正确指定包围字符)时,MySQL 无法正确处理包含逗号但用引号引起来的字段。这些逗号被误解为字段分隔符,这会导致字段被错误地分割。

尝试改变:

ENCLOSED BY '"'

至:

OPTIONALLY ENCLOSED BY '"'
© www.soinside.com 2019 - 2024. All rights reserved.