如何将数据从文本文件导入数据库而不在文本文件中给出主键?
所以我有一个表,其中有 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/