如何修改每行SQL文件

时间:2013-02-28 22:29:57

标签: php mysql foreach mysqli

我需要修改许多SQL语句以包含一个递增的数字,以跟踪“'段落中的每个单词”。柱。对不起,但我的PHP技能有限。我在阅读文件后正在考虑一个foreach循环,但是不能提出任何实际修改行的内容以包含每个单词的每个值。

当前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.

目前的价值观是' book','章节,' 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- VALUES是' book',' chapter,' paragraph_number',' paragraph',' 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;

1 个答案:

答案 0 :(得分:0)

<?php
$text = 'This is a sentence from book 1, chapter 5, paragraph 16.';
$words = preg_split("/\s+/", $text);
$query = "INSERT INTO `book` VALUES \n";
foreach($words as $word){
 $values[] = "(1, 5, 16, 1,'$word')";
}
$finalquery = $query.implode(",\n", $values);
echo $finalquery.";";
?>

输出:

INSERT INTO `book` VALUES 
(1, 5, 16, 1,'This'),
(1, 5, 16, 1,'is'),
(1, 5, 16, 1,'a'),
(1, 5, 16, 1,'sentence'),
(1, 5, 16, 1,'from'),
(1, 5, 16, 1,'book'),
(1, 5, 16, 1,'1,'),
(1, 5, 16, 1,'chapter'),
(1, 5, 16, 1,'5,'),
(1, 5, 16, 1,'paragraph'),
(1, 5, 16, 1,'16.');