MySQL phpMyAdmin 从文本导入没有主键?

标签 mysql import phpmyadmin

如何将数据从文本文件导入数据库而不在文本文件中给出主键?

所以我有一个表,其中有 3 列:ID、名字、姓氏。

ID 自动递增。我想从文本文件中读取名称,如下所示:

约翰·史密斯; 迈克尔·乔丹;

我不想使用主键,因为我不知道表中的下一个主键是什么,这应该通过自动增量来完成。

如果我像这样使用文本文件,则会收到错误消息:无效的列数...

设置:

用 , 分隔的列

用“”括起来的列

列转义为:\

行终止于:;

如果我使用这样的文本文件:

21、约翰·史密斯; 22、迈克尔·乔丹;

该文件可以导入(奇怪的行为是它也尝试读取 3 个空行,并发送错误,这个我也不明白,但它是一个不同的主题)

这是表中的转储:

CREATE TABLE IF NOT EXISTS `LoginData2` (
  `FirstName` varchar(10) NOT NULL,
  `LastName` varchar(10) NOT NULL,
  `ID` int(4) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`ID`),
  UNIQUE KEY `ID` (`ID`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

最佳答案

您的规范规定列包含:“

我在列周围添加了引号(并去掉了空格):

"John","Smith";"Michael","Jordan";

并将自动增量 ID 列放在最后。使用这些设置可以很好地导入。

这是我的测试表中的转储。与你的比较一下,看看有什么不同。另外,尝试创建此表并导入上面的数据以查看其工作原理。

CREATE TABLE IF NOT EXISTS `users` (
  `firstname` varchar(100) NOT NULL,
  `lastname` varchar(100) NOT NULL,
  `id` int(11) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

ALTER TABLE `users`
  ADD PRIMARY KEY (`id`);

ALTER TABLE `users`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=7;

更新:当您使用 phpMyAdmin 导入时,请确保导入设置正确。您的设置不是默认设置。我相信您需要使用 LOAD DATA 选择 csv,然后按照您的说明填写所有分隔符。

关于MySQL phpMyAdmin 从文本导入没有主键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30144786/

相关文章:

java - 我可以使用 Hibernate 连接不同的数据库并从表中导入数据吗?没有预定义的对象类

ruby - 将 CSV 导入 Postgresql,其中包含不重复行的重复值

php - 向 sql 表添加值时出现未定义错误

java - 从本地数据库到全局数据库

mysql - 法语应该使用什么排序规则?

mysql - 如何手动建立mysql缓存

mysql - 从两个表创建 Mysql View 不起作用

mysql - 如何为每个 GROUP BY 条件返回多行

xml - 当值是多个或缺失时来自 XML 的 R 数据框

mysql - SQL 设置日期戳