У меня есть CSV-файл, который я загрузил здесь https://drive.google.com/file/d/1JfYc-7840utoa3k5iamEC-sScPlzsVVK/view Я создал таблицу Titani c, которая имеет следующую структуру.
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
Если вы посмотрите на CSV-файл в ссылке, которую я дал, в строке 7 есть запись
Moran Mr. James M 3 8.4583 Queenstown no
, возраст не указан в приведенной выше строке. age предполагается равным 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, где некоторые значения, такие как двойные кавычки "" и скобки () появляются в некоторых полях, а в некоторых полях нет ничего, они пустые или пустые.
I Я использую mysql на Ubuntu 19.10. Версия сервера: 8.0.18-0ubuntu0.19.10.1 (Ubuntu)
обновление 1 согласно обсуждению в комментариях здесь, я вставляю файл csv, который у меня есть, как текст
последний, первый, пол, возраст, класс, стоимость, встал, выжил
Браун, г-н. Оуэн Харрис, М, 22,3,7.25, Саутгемптон, нет
Каммингс, миссис. Джон Брэдли (Флоренс Бриггс Тэйер), F, 38,1,71.2833, Шербур, да
Хейккинен, Мисс Лайна, F, 26,3,7.925, Саутгемптон, да
Футрелл, миссис. Жак Хит (Лили Мэй Пил), F, 35,1,53,1, Саутгемптон, да Аллен, г-н. Уильям Генри, М, 35,3,8.05, Саутгемптон, нет
Моран, г-н. Джеймс, M, 3,8,4583, Квинстаун, нет
McGowan, "Мисс Анна", "Ann ie" "", F, 15,3,8,0292, Квинстаун, да
Backstrom, миссис. Карл Альфред (Мария Матильда Густафссон), F, 33,3,15,85, Саутгемптон, да
Форд, "Мисс Робина Магг ie" "Ruby" "", F, 9,3,34.375, Саутгемптон, no
Navratil, "Mr. Michel (" Louis M Hoffman "") ", M, 36.5,2,26, Southampton, no Byles, Rev. Томас Roussel Davids, M, 42,2,13, Саутгемптон, нет
полный CSV в текстовом виде можно увидеть здесь https://pastebin.com/1B1mVYhJ кроме этого вот скриншот того, как это смотрит на мою систему, когда я запускаю запрос данных о загрузке запрос данных о загрузке данных
обновление 2
Я выполнил это назначение, изменив определение таблицы созданы, а не воспринимают все значения как разные типы данных. Я взял их все как varchar. Вопросы, которые я пытался сделать, здесь: http://arshahuja.blogspot.com/2018/01/deit-14610-big-data-analytics-laboratory.html решение также существует, единственная проблема заключалась в использовании такого рода из CSV-файла. Однако я не очень убежден, создав такую таблицу и загрузив данные, как указано выше. Сценарий проблемы ios, следующий за определением таблицы, решил мою проблему. Но что, если мне нужно использовать такие значения, как возраст и класс, тарифы в некоторых математических вычислениях, то как мне будет go для написания запроса, в котором есть все, что называется 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 сек c)