在'附近使用MySQL正确的语法,以','结尾的字段,以'“'行结尾的行,在第1行以'\ n'ign'结尾

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

我有一个csv文件,我已经在这里上传了https://drive.google.com/file/d/1JfYc-7840utoa3k5iamEC-sScPlzsVVK/view我创建了一个表泰坦尼克号,它具有以下结构。

mysql> desc Titanic;
+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| last     | varchar(255) | NO   |     | NULL    |       |
| first    | varchar(255) | NO   |     | NULL    |       |
| gender   | char(2)      | NO   |     | NULL    |       |
| age      | decimal(3,0) | YES  |     | NULL    |       |
| class    | int(3)       | NO   |     | NULL    |       |
| fare     | decimal(5,0) | NO   |     | NULL    |       |
| embarked | varchar(255) | NO   |     | NULL    |       |
| survived | char(3)      | NO   |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+
8 rows in set (1.89 sec)

我被要求使用LOAD DATA INFILE语句填充此表,并根据我的任务

年龄为空白表示年龄未知票价可能超过两位数,因为当时货币不是以10为底的]

我尝试如下执行语句

mysql> load data infile '/var/lib/mysql-files/Titanic.csv' into table Titanic,fields terminated by ',' optinally enclosed by '"' lines terminated by '\n' ignore1 lines;

我收到错误

ERROR 1064 (42000): 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 ',fields terminated by ',' optinally enclosed by '"' lines terminated by '\n' ign' at line 1

我尝试关注

mysql> load data infile '/var/lib/mysql-files/Titanic.csv' into table Titanic,fields terminated by ',' optinally enclosed by '"' lines terminated by '\n' ignore
 1 lines;

我得到的错误是

ERROR 1064 (40000): 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 ',fields terminated by ',' optinally enclosed by '"' lines terminated by '\n' ign' at line 1

如果您查看我给第7行提供的链接中的csv文件,请输入条目

Moran   Mr. James   M       3   8.4583  Queenstown  no

在上一行中没有提及年龄。因此,假定年龄为NULL,因此在创建表时,我在创建表中使用NULL作为年龄。第24行有以下条目

McGowan  Miss Anna "Annie"  F   15  3   8.0292  Queenstown  yes

票价小数。

第87行有以下条目

Backstrom   Mrs. Karl Alfred (Maria Mathilda Gustafsson)    F   33  3   15.85   Southampton yes

在标题为第一的列中有一个括号。第150行有以下内容

Navratil     Mr. Michel ("Louis M Hoffman") M   36.5    2   26  Southampton no

在某些领域中并非总是具有“”。我不明白如何使用LOAD DATA INFILE语句来使用此csv。我这样做是为了学习,所以我不想使用任何GUI工具。我要执行的上述LOAD DATA语句中的错误是什么?如何在这种csv中使用加载数据,其中某些值(如双引号“”和方括号()出现在某些字段中,而某些字段中没有任何东西,它们为空或NULL。

我正在Ubuntu 19.10上使用mysql。服务器版本:8.0.18-0ubuntu0.19.10.1(Ubuntu)

更新1

根据评论中的讨论,这里我粘贴的是文本格式的csv文件

最后,第一位,性别,年龄,阶级,票价,入库,幸存

布隆德先生Owen Harris,M,22,3,7.25,Southampton,no卡明斯夫人John Bradley(Florence Briggs Thayer),F,38,1,71.2833,Cherbourg,是Heikkinen,Laina小姐,F,26,3,7.925,Southampton,是富特雷尔夫人雅克·希思(莉莉·梅·皮尔),F,35,1,53.1,Southampton,是的艾伦,先生William Henry,M,35,3,8.05,Southampton,no莫兰先生James,M,3,8.4583,Queenstown,no麦高文,“安娜小姐”“安妮””,F,15,3,8.0292,皇后镇,是Backstrom,太太卡尔·阿尔弗雷德(Maria Mathilda Gustafsson),F,33,3,15.85,Southampton,是福特,“ Robina Maggie小姐”“ Ruby”“,F,9,3,34.375,Southampton,no纳芙拉蒂尔,“米歇尔先生(“ Louis M Hoffman”“)”,男,36.5、2、26,南安普敦,无拜尔斯,修订版。 Thomas Roussel Davids,M,42,2,13,Southampton,no

完整的csv文本格式可以在这里看到https://pastebin.com/1B1mVYhJ除此之外,这里是屏幕截图,显示了我发出负载数据查询时系统的外观load data infile query

更新2

我通过更改所创建表的定义来完成此分配,而不是将所有值都当作不同的不同数据类型,而是将所有值都当作varchar我试图做的问题在这里http://arshahuja.blogspot.com/2018/01/deit-14610-big-data-analytics-laboratory.html解决方案也是唯一的问题是使用这种csv文件。但是,通过创建这样的表并按照表定义解决了上述问题场景中提到的加载数据的方式,我并不是很确信。但是,如果我需要在一些数学计算中使用年龄和阶级,票价等这些值,那我将如何编写一个包含varchar的所有内容的查询?

mysql> desc Titanic;
+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| last     | varchar(255) | NO   |     | NULL    |       |
| first    | varchar(255) | NO   |     | NULL    |       |
| gender   | varchar(255) | NO   |     | NULL    |       |
| age      | varchar(255) | YES  |     | NULL    |       |
| class    | varchar(255) | NO   |     | NULL    |       |
| fare     | varchar(255) | NO   |     | NULL    |       |
| embarked | varchar(255) | NO   |     | NULL    |       |
| survived | varchar(3)   | NO   |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+

组中的8行(0.06秒)

我有一个csv文件,我已经在这里上传了https://drive.google.com/file/d/1JfYc-7840utoa3k5iamEC-sScPlzsVVK/view我创建了一个Titanic表,它具有以下结构。 mysql> desc泰坦尼克号; ...

mysql load-data-infile csv-import
2个回答
1
投票

您的表名后面有逗号。


0
投票

您拼错了optionally

© www.soinside.com 2019 - 2024. All rights reserved.