gpt4 book ai didi

MySQL 在第 1 行 ',fields terminated by ' ,' optinally enclosed by ' "' lines terminated by '\n' ign' 附近使用的正确语法

转载 作者:行者123 更新时间:2023-11-29 09:24:37 25 4
gpt4 key购买 nike

我有一个 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 语句来填充此表,并根据我的任务

A blank entry for age means that the age is unknown Fare can have more than two digits because money was not base-10 at that time

我尝试执行如下语句

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

如果您查看我给出的链接中的 csv 文件,第 7 行有条目

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 文件粘贴为文本

last,first,gender,age,class,fare,embarked,survived

布劳德先生欧文·哈里斯,男,22,3,7.25,南安普顿,否
卡明斯,夫人。约翰·布拉德利(弗洛伦斯·布里格斯·塞耶),F,38,1,71.2833,瑟堡,是
Heikkinen,莱娜小姐,F,26,3,7.925,南安普敦,是
富特雷尔女士雅克·希思(莉莉·梅· PIL ),F,35,1,53.1,南安普敦,是的艾伦,先生。威廉·亨利,男,35,3,8.05,南安普敦,否
莫兰先生詹姆斯,M,,3,8.4583,皇后镇,无
麦高恩,“安娜小姐”“安妮””,F,15,3,8.0292,皇后镇,是
巴克斯特伦,夫人。卡尔·阿尔弗雷德(玛丽亚·玛蒂尔达·古斯塔夫森),F,33,3,15.85,南安普敦,是
福特,“罗宾娜·玛吉小姐”“鲁比”“”,F,9,3,34.375,南安普敦,无
Navratil,”米歇尔先生(“路易斯 M 霍夫曼”)”,M,36.5,2,26,南安普敦,无拜尔斯,牧师。托马斯·罗塞尔·戴维斯,M,42,2,13,南安普敦,否

可以在此处查看文本形式的完整 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 秒)

最佳答案

表名后面有一个逗号。

load data infile '/var/lib/mysql-files/Titanic.csv' into table Titanic,fields terminated by ...

如果您查看 https://dev.mysql.com/doc/refman/8.0/en/load-data.html 处的语法文档而完整语句的例子,表名后面没有逗号。

LOAD DATA INFILE '/tmp/test.txt' INTO TABLE test FIELDS TERMINATED BY ',' LINES STARTING BY 'xxx';

一般来说,当 MySQL 报告语法错误时,它会准确地告诉您在语句中的哪个位置它发现了它认为不符合语法规则的内容。

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 在第 1 行 ',fields terminated by ' ,' optinally enclosed by ' "' lines terminated by '\n' ign' 附近使用的正确语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59811977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com