从命令行Mysql创建表的问题

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

当我在终端中输入代码时,它会创建数据库,但不会创建表。当我输入“ locations”然后输入“ Show TABLES”时,它告诉我没有创建表。此代码应创建一个数据库,然后将该表导入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。

mysql csv csh load-data-infile
1个回答
0
投票

这里是完整答案,基于@Honeyboy的评论。

除了需要USE locations;之外,还需要解决其他一些问题:

  • Shell引用不是很正确。一方面,您现有的代码无法解决换行问题-它需要换行符才能按编写的方式运行。
  • 表名在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)'
© www.soinside.com 2019 - 2024. All rights reserved.