我正在尝试将 .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
的设置/配置
上传中出现逗号的问题可能源于对包含逗号的字段的错误处理。当您指定FIELDS ENCLOSED BY '"'(或者没有正确指定包围字符)时,MySQL 无法正确处理包含逗号但用引号引起来的字段。这些逗号被误解为字段分隔符,这会导致字段被错误地分割。
尝试改变:
ENCLOSED BY '"'
至:
OPTIONALLY ENCLOSED BY '"'