MySQL phpMyAdmin 从文本导入而没有主键?
Posted
技术标签:
【中文标题】MySQL phpMyAdmin 从文本导入而没有主键?【英文标题】:MySQL phpMyAdmin import from text without having the primary key? 【发布时间】:2015-07-20 14:33:36 【问题描述】:如何在不提供文本文件主键的情况下将文本文件中的数据导入数据库?
所以我有一个表,其中包含 3 列:ID、firstName、lastName。
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 ;
【问题讨论】:
看看:this post 嗨,我检查了帖子,答案并没有真正帮助,例如,接受的答案对我不起作用,自动递增的主键是最后一列还是第一列都没有关系. 【参考方案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,然后按照您的说明填写所有分隔符。
【讨论】:
嗨,我按照你说的做了尝试,但我仍然得到 Invalid column count。 @user3435407 我已经用表中的转储修改了我的答案。将其与您的进行比较,看看有什么不同。你也可以从你的桌子上发布一个转储,这样我就可以使用你的结构。 我复制了您的代码并在 phpmyadmin 中执行了它,然后我尝试再次导入,使用与帖子中相同的设置,我仍然得到:无效的列数。我不知道如何从我的桌子上得到转储,但我想通了 文本文件现在包含:"Alfa1","Alfa2";"Beta1","Beta2"; 当您使用 phpMyAdmin 导入时,请确保导入设置正确。您的设置不是默认设置。我相信您需要使用 LOAD DATA 选择 csv,然后按照您的说明填写所有分隔符。以上是关于MySQL phpMyAdmin 从文本导入而没有主键?的主要内容,如果未能解决你的问题,请参考以下文章
如何通过ods从phpmyadmin导入mysql db中的前导零
将用户输入从文本框插入到数据库(使用 mysql 的 PHP 到 PHPMYADMIN)代码由于某种原因不起作用