Проблемы создания таблиц из командной строки Mysql - PullRequest
0 голосов
/ 08 ноября 2019

Когда я набираю код в Терминале, он создает базу данных, но не создает таблицу. Когда я набираю слово «местоположения», а затем «Показать ТАБЛИЦЫ», это говорит мне, что таблицы не создавались. Этот код должен создать базу данных и таблицу, а затем импортировать файл csv в «местоположения» базы данных

mysql -u root --password=password -e 
"CREATE DATABASE locations;"
"CREATE TABLE location_T (number1 INT NOT NULL,
number2 INT NOT NULL,
number3 INT NOT NULL,
names VARCHAR(100) NOT NULL,PRIMARY KEY (number1));"
LOAD DATA LOCAL INFILE 'locations.csv' 
INTO TABLE overview FIELDS TERMINATED by '\t' 
ENCLOSED BY '"'LINES TERMINATED BY '\n' "(number1,number2,number3,names)"

Я даже пытался использовать абсолютный путь к файлу.

Этофайл csv

number1         number2         number3         names
50              15              16              john
45              20              40              lauren
23              90              22              james
46              21              16              jonathan

Кто-нибудь знает, что я делаю неправильно? Я использую csh.

1 Ответ

0 голосов
/ 09 ноября 2019

Вот полный ответ, основанный на комментарии @ Honeyboy.

В дополнение к необходимости USE locations; есть еще несколько вещей, которые нужно исправить:

  • Цитирование оболочки былоне совсем верно. Во-первых, ваш существующий код не учитывает разрывы строк - для его выполнения требуется экранирование от продолжения строки.
  • Имя таблицы изменилось между оператором CREATE TABLE и LOAD DATAоператор
  • Оператор LOAD DATA не игнорировал строку заголовка файла с разделителями табуляции.
mysql -u root --password=password -e \
'CREATE DATABASE locations; \
USE locations; \
CREATE TABLE location_T (number1 INT NOT NULL, \
number2 INT NOT NULL, \
number3 INT NOT NULL, \
names VARCHAR(100) NOT NULL,PRIMARY KEY (number1)); \
LOAD DATA LOCAL INFILE "locations.csv" \
INTO TABLE location_T FIELDS TERMINATED by "\t" \
ENCLOSED BY "\"" LINES TERMINATED BY "\n" IGNORE 1 LINES \
(number1,number2,number3,names)'
...