0
我需要修改許多SQL語句以包含遞增的數字以跟蹤「段落」列中的每個單詞。對不起,但我的PHP技能是有限的。在閱讀文件後,我正在考慮一個foreach循環,但不能想出任何事實來修改這些行以包含每個單詞的每個值。如何修改SQL文件的每一行
當前SQL:
INSERT INTO `book` VALUES(1, 1, 1, 'These are the words in a sentence in a chapter in a book.');
INSERT INTO `book` VALUES(1, 1, 2, 'These are the words in the second sentence in a chapter in a book.');
INSERT INTO `book` VALUES(1, 1, 3, 'These are the words in the third sentence in a chapter in a book.');
...and so on.
的當前值是 '書',「章, 'paragraph_number', '款'。
目標:
INSERT INTO `book` VALUES(1, 1, 1, 1,'These');
INSERT INTO `book` VALUES(1, 1, 1, 2,'are');
INSERT INTO `book` VALUES(1, 1, 1, 3,'the');
INSERT INTO `book` VALUES(1, 1, 1, 4,'words');
的-NEW-值是 '書',「章, 'paragraph_number', '款', 'word_number'。
我已經有書,章節和段落號。
例如:
INSERT INTO `book` VALUES(1, 5, 16, 'This is a sentence from book 1, chapter 5, paragraph 16.');
將轉換爲:
INSERT INTO `book` VALUES(1, 5, 16, 1,'This');
INSERT INTO `book` VALUES(1, 5, 16, 2,'is');
INSERT INTO `book` VALUES(1, 5, 16, 3,'a');
INSERT INTO `book` VALUES(1, 5, 16, 4,'sentence');
INSERT INTO `book` VALUES(1, 5, 16, 5,'from');
INSERT INTO `book` VALUES(1, 5, 16, 6,'book');
INSERT INTO `book` VALUES(1, 5, 16, 7,'1,');
INSERT INTO `book` VALUES(1, 5, 16, 8,'chapter');
INSERT INTO `book` VALUES(1, 5, 16, 9,'5,');
INSERT INTO `book` VALUES(1, 5, 16, 10,'paragraph');
INSERT INTO `book` VALUES(1, 5, 16, 11,'16.');
任何援助將不勝感激...謝謝!
編輯:下面是代碼的工作....基於Akam的答案...我改變了SQL語句。添加了[SEP]將文本與其他數據分開,這些數據允許我使用文本。另外,添加$ x來增加字數。
SQL:
1, 1, 1,[SEP]These are the words in sentence 1 in chapter 1 in a book.
1, 1, 2,[SEP]These are the words in sentence 2 in chapter 1 in a book.
PHP:
$lines = file('my-book.sql');
$query = "INSERT INTO `book` VALUES \n";
foreach ($lines as $line)
{
$part = preg_split("/\[SEP\]/", $line);
$part[1] = preg_replace('~[\r\n]+~', '', $part[1]);
$words = preg_split("/\s+/", $part[1]);
$x = 1;
foreach($words as $word)
{
$values[] = "(".$part[0]." ".$x.", '".$word."')";
$x++;
}
}
$new_lines = implode(",\n", $values);
$new_lines = $query.$new_lines.";";
echo $new_lines;
感謝阿卡姆!我設法使用您的代碼作爲基礎來完成我所需要的工作。請參閱OP中的編輯。 – Mark 2013-03-01 13:59:33