我想根据从本地数据文件中查找的外键将数据插入到表中,但我不确定语法。我有一个单词列表:
jamba
fire
street
road
在一个文件中,我想使用
LOAD DATA LOCAL INFILE '$PATH'
INTO TABLE b1
FIELDS TERMINATED BY '\n'
(SELECT id FROM dictionary
WHERE dictionary.word='word-from-file');
为了更好地描述这个项目:我正在尝试从字典中创建一个外键表来布局一本书,就像使用字典条目号而不是单词来订购一本书。
那就是:那句话 The quick brown fox jumped over the lazy dog
在table上 1024 891 26 51 75 521 1024 762 1024 641 45
(完全是猜测)但每个数字都是字典中一个单词的id号。
第一个表是字典:
Field Type
id word
word varchar(128)
第二张table是书b1:
Field Type
pos int #Position of the word, essentially an id
wid int #A foreign key corresponding to a dictionary.word
区分大小写很重要。不要和不要是两个不同的词。
本质上,我是在尝试执行@revo:insert mysql on foreign key id php的so answer中解释的操作,但是使用本地数据文件中的字段,而不是单独的表。
注意:区分大小写很重要!我已经根据定义了dictionary单词字段
CHARACTER SET utf8 COLLATE utf8_bin
2条答案
按热度按时间bksxznpy1#
你需要一个
SET
条款。还要注意线路终端(\r\n
在windows操作系统中):agyaoht72#
LOAD
将新列表添加到一个额外的表中,该表的id有一个额外的列,默认为NULL
.INSERT .. SELECT .. WHERE .. NULL
把生词插入词典。做一个多表
UPDATE
把所有单词的ID都取出来。这个进入额外的一栏。继续做任何你需要做的事情——比如复制数据(使用
id
而不是word
)换张table。我在这里更详细地讲。
同时,一定要有相同的
COLLATION
(例如,utf8_bin
)在word
列存在于任何表中。如果排序规则匹配并且字典有一个索引,那么对于应用程序来说应该是相当快的
word
.不匹配的排序规则会导致不使用索引,这将非常慢。