【问题标题】:Problems creating Tables from command line Mysql从命令行Mysql创建表的问题
【发布时间】:2020-03-05 07:49:40
【问题描述】:

当我在终端中输入代码时,它会创建数据库但不会创建表。 当我输入使用“位置”然后“显示表格”时,它告诉我没有创建任何表格。 此代码应创建一个数据库和表,然后将 csv 文件导入数据库“位置”

【问题讨论】:

  • 创建数据库后,您可以尝试在创建表之前使用“use”命令切换到数据库。

标签: mysql csv csh load-data-infile


【解决方案1】:

这是基于@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)'

【讨论】:

  • 我在 linux shell 中输入它,我也在 csh 中输入代码,编译器告诉我 ' " ' 是不匹配的。你能解释一下为什么你使用 '\' 运算符吗?
  • 您最初的问题没有提到这一点,而 bash 更为常见。我现在已经调整了 csh 的答案,但您可能有兴趣阅读 the challenges of scripting in csh
  • 我尝试在 bash 和 csh 中输入它,但我总是得到一个错误:它总是说“意外标记附近的语法错误 `(''
  • 这个版本是csh,另一个版本是bash。您是说两者都不能在正确的外壳中工作吗?
  • 是的,我为 bash 和 csh 尝试过,但都不起作用。它一直告诉我,我在令牌 '(" 附近有语法错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多