【问题标题】:Error importing .sql file into MySQL database with Terminal on Mac在 Mac 上使用终端将 .sql 文件导入 MySQL 数据库时出错
【发布时间】:2021-03-23 05:33:27
【问题描述】:

在开源Wikibooks textbook for MySQL中,将大量信息插入MySQL数据库的指南如下:

创建一个空白 .txt 文件并将此信息复制/粘贴到其中, 将其保存为 tenPeople.sql。

INSERT INTO peopleInfo (firstName, lastName, age, gender) values ("Mary", "Jones", 21, "female");
INSERT INTO peopleInfo (firstName, lastName, age, gender) values ("Jill", "Harrington", 19, "female");
INSERT INTO peopleInfo (firstName, lastName, age, gender) values ("Bob", "Mill", 26, "male");
INSERT INTO peopleInfo (firstName, lastName, age, gender) values ("Alfred", "Jinks", 23, "male");
INSERT INTO peopleInfo (firstName, lastName, age, gender) values ("Sandra", "Tussel", 31, "female");
INSERT INTO peopleInfo (firstName, lastName, age, gender) values ("Mike", "Habraha", 45, "male");
INSERT INTO peopleInfo (firstName, lastName, age, gender) values ("John", "Murry", 22, "male");
INSERT INTO peopleInfo (firstName, lastName, age, gender) values ("Jake", "Mechowsky", 34, "male");
INSERT INTO peopleInfo (firstName, lastName, age, gender) values ("Hobrah", "Hinbrah", 24, "hermaphrodite");
INSERT INTO peopleInfo (firstName, lastName, age, gender) values ("Laura", "Smith", 17, "female");

非常好。现在我们 想把所有这些人都放在我们的桌子上。退出 MySQL 并转到 保存 tenPeople.sql 文件的目录。 在那里,要将所有数据放入数据库,请键入:

mysql -u ted -p people <tenPeople.sql and enter your password.

https://en.wikibooks.org/wiki/MySQL/MySQL_Practical_Guide


我一直在尝试完成最后一步,但在终端中收到以下错误:

root@debian:~# -u root -p people <~/Documents/tenPeople.sql             
-bash: /root/Documents/tenPeople.sql: No such file or directory

这里,root 是我的 MySQL 用户名(与示例中的“ted”相对)。我已经验证 tenPeople.sql 实际上在 /Users/ttoshiro/Documents/tenPeople.sql 中,但无论我输入什么文件路径,我都会收到一条错误消息,说它不存在。如果重要的话,我正在使用 XAMPP,并尝试了以下方法:

root@debian:~# /Applications/XAMPP/xamppfiles/bin/mysql -u root -p people < /Users/ttoshiro/Documents/tenPeople.sql

但在这种情况下,我也收到了完全相同的错误消息。我也尝试直接启动 MySQL:

/Applications/XAMPP/xamppfiles/bin/mysql -u root -p people < /Users/ttoshiro/Documents/tenPeople.sql 

在这种情况下,我收到一个错误,声称数据库“人”未知:ERROR 1049 (42000): Unknown database 'people'。这没有意义,因为在终端中输入\u people 时,我可以清楚地看到数据库“人员”中的表列表。所以,显然数据库必须存在。

我做错了什么?是否有另一种方法可以使用 XAMPP 上传包含大量信息的 .sql 文件?为什么以 root 身份运行时文件路径的工作方式不同?

【问题讨论】:

  • 您实际将文件保存在哪里? ls ~/... 是否显示文件?
  • 你不应该以root身份运行它,MySQL不关心你是什么UNIX用户,事实上,以root身份运行东西在这里会严重适得其反。
  • @tadman ls ~/... 确实显示了文件;它肯定在那里。我尝试了您的建议,但收到了不同的错误(现已编辑到帖子中)。
  • .sql 还包含什么?有CREATE DATABASE 电话吗?
  • 如果您在使用命令行时遇到很多问题,请考虑先尝试MySQL Workbench

标签: mysql sql terminal xampp


【解决方案1】:

我怀疑错别字是导致找不到文件的原因。在您的信息文本中,您将文件指定为/Users/ttoshiro/Documents/tenPeople.sql

然后,在终端中,您指向/Users/totoro/Documents/tenPeople.sql

根据您的提示(即终端中光标之前的查看字符),您可能是root,因为最后一个符号是#,通常表示这一点。这就是为什么在您第一次尝试使用 ~ 时终端会转到 /root(它指向用户的主目录,对于 root,通常是 /root)。

为了排除任何错误,我建议您 cd/Users/ttoshiro/Documents/Users/totoro/Documents(以正确者为准)并执行 mysql -u root -p people &lt; tenPeople.sql

此外,当您在繁忙的数据库中处理大量数据时,我认为 Wikibooks 对 MySQL 的推荐是有问题的。至少您应该使用事务和/或多插入(即,每个插入语句多行)。人们在批量加载数据时通常使用的是LOAD DATA INFILE。我通常使用 MariaDB,their docs 非常好,应该也适用于 MySQL。

对于phpmyadmin还有其他方式,你也可以上传包含SQL的文件到服务器。但是,这会增加开销,因为 PHP 和 Apache 将在文件实际进入 MySQL 之前处理文件(这在您的情况下可能是可以接受的,因为数据看起来很小)。

最后,我建议通常将包含 SQL 的文件命名为 .sql 扩展名。

【讨论】:

  • 糟糕,这是一个编辑问题。我想将我计算机上的用户名更改为 StackOverflow 上的用户名,以减少任何混淆。我也确实认为 Wikibooks 的来源是有问题的,但不幸的是,这是我的班级使用的。您知道在终端中将 .sql 文件上传到服务器的更好方法吗?
  • 方法没问题,如果任务是使用终端处理sql。如果您想尝试LOAD DATA INFILE,请查看:stackoverflow.com/a/53813762/1240678(您需要将 txt 重新格式化为 csv)。您也可以选择登录 mysql 控制台(只需在 CLI 命令中省略 MySQL [(none)]>。使用USE &lt;database&gt;; 选择存储peopleInfo 表的数据库然后,只需将.sql 中的行粘贴到提示符中。 MySQL 将处理 SQL 并将行插入到表中。
猜你喜欢
  • 2013-06-14
  • 2014-11-22
  • 2012-12-27
  • 2017-10-30
  • 1970-01-01
  • 1970-01-01
  • 2013-04-22
  • 2016-11-29
  • 1970-01-01
相关资源
最近更新 更多