2013-09-16 34 views
0

我有一个有800.000行的MYSQL数据库。现在我想知道:我如何拆分字符串并在数据库中插入单个单词?MYSQL拆分字符串并在数据库中插入单个字

I.E.

我有这样的字符串:“如何使用Windows 7”

我想拆分此字符串,比插入“怎么样”,“来”,“用”,“窗口”,“7”在包含该字符串的同一个表。这必须为所有800.000行自动完成。

我正在开发java和sql(sqldeveloper)。

好的。我添加更多信息以更明确。这是我的表的定义。

CREATE TABLE phrase 
(
name VARCHAR(300) NOT NULL default '', 
category VARCHAR(60) default '', 
PRIMARY KEY(name, category) 
); 

我想拆分的字符串是“name”。所以,每个单词(来自分裂)都将被插入到“短语”表中。

+1

什么语言正在使用调用SQL?我可能会建议在那里使用一个构造。 –

+0

添加了更多有问题的信息。 –

+0

*为什么*你想要这样做?听起来像全文索引策略可能是你需要的全部... – eggyal

回答

1

你可以尝试这样的事情(未经测试):

String yourQuery = "SELECT * FROM phrases WHERE name = 'how to use windows 7'"; 
PreparedStatement statement = connection.prepareStatement(yourQuery); 
statement.setMaxRows(1); 
ResultSet rs = statement.executeQuery(); 

String[] arr = null; 
String name; 
while (rs.next()) { 
    name = rs.getString(1); // Where 1 is column number. 
} 

arr = name.split(" "); // Split at space 
// (e.g. "how to use windows 7" becomes "how", "to", "use", "windows", "7" 
System.out.println(arr[2]); // Output "use" 
String combined = Arrays.toString(arr); // "how, to, use, windows, 7" 

yourQuery = "UPDATE phrases SET name = '" + combined + "' WHERE COLUMN = how to use windows 7;" 
statement = connection.prepareStatement(updateStatement); 
int rowsAffected = statement.executeStatement(); 

我根据一些来自this question代码和这里的一些人的。那当然是取代一行。您可以根据需要循环和/或修改您的SQL语句。你也应该清理你的SQL以防止注入向量;但为简单起见,这里只是加入了这里。

相关问题