如何在不在文本文件中提供主键的情况下将数据从文本文件导入数据库?
所以我有一个表格,其中有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 ;
答案 0 :(得分:2)
您的规范说明了附带的字符:"
我在列周围添加了引号(并删除了空格):
"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,然后按照您的说明填写所有分隔符。