我试图将10,000通用密码列表导入到一个表中,以禁止在给定系统中使用这些密码。
该文件是一个单列TXT文件。尝试将其放入带有单个列的表中,会给出一个主键错误。因此,我想,我将设置一个带有自动增量的id列,然后为每一行传递null
以触发要索引的键。这也不起作用(或者我有语法问题),因为这给了我10,000行数字和空密码字段。
可以这样做吗?或者我应该编写一个python脚本来向每个文本行添加一个索引,然后以这种方式导入它?
我想做的是:
LOAD DATA INFILE '/tmp/passwords.txt' INTO TABLE `common_passwords` (password,id) SET id=@id+1,password=@password;
这张桌子:
CREATE TABLE `common_passwords` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`password` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16384 DEFAULT CHARSET=latin1;
似乎我们应该能够在SQL中很容易地做到这一点.
发布于 2018-10-10 08:27:20
引用手册:
如果未指定字段或行子句,则默认值与编写以下内容相同:
FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\'
LINES TERMINATED BY '\n' STARTING BY ''
和
解释转义字符前面的字符\作为转义序列。例如,\t、\n和\意味着制表符、换行符和反斜杠。有关转义序列的完整列表,请参阅稍后转义字段的讨论。
和
如果字符转义的字段为空,则不会发生转义序列解释.
和
..。空('')
-- https://dev.mysql.com/doc/refman/8.0/en/load-data.html
也就是说,如果您有制表符或反斜杠,数据将在读取时损坏。这也许可以解释你遇到的问题。
我想这可能是解决办法:
FIELDS ESCAPED BY ''
https://dba.stackexchange.com/questions/218419
复制相似问题