2014-03-28 57 views
0

我有一個文本集文件在以下格式:如何生成的數據集值

user ID Song ID Rating 
0   7171  5 
0   8637  4 
0   21966  4 
0   35821  5 

(它有他們之間只是一個TAB空間之間沒有破折號)

我有大約100萬這樣的記錄。我需要生成具有流派ID的第四條記錄。這一流派的ID我有它在另一個文本文件類似如下格式:

Song ID Album ID Artist ID Genre ID 
4   243  2282  0 
5   7783  3832  0 
6   11704  1655  106 
7   10126  6328  114 
8   10672  4121  0 

如何生成「類型ID」數據集中相應的「歌曲ID」。 你可以請建議一個最簡單的方法來生成第四列。

+0

你想創建一個新的或基於你想創建的songID嗎? –

回答

1

@安德斯芬:他使用MySQL,它不支持SELECT ....INTO(甲骨文)

INSERT INTO newTable 
SELECT tb1.userID, tb1.SongID, tb1.Rating, tb2.GenreID 
FROM tab1 
LEFT JOIN tab2 
ON tab1.SongID = tab2.SongID 

我會一直增加一條,作爲一個評論,但我還是不能。

+0

嗨praveen ..這是最簡單的方法..我有約717萬記錄....是使用hadoop或smethg任何其他解決方案? –

0

所有四列創建新表:

CREATE TABLE newTable 
( 
    userid int, 
    SongID int, 
    Rating int, 
    GenreID int 
) 

的填充它:

SELECT tb1.userID, tb1.SongID, tb1.Rating, tb2.GenreID 
INTO newTable 
FROM tab1 
LEFT JOIN tab2 
ON tab1.SongID = tab2.SongID 

下面 它說,語法犯規申請MySQL和僅適用於Oracle。語法FRA MySQL的描述如下:http://dev.mysql.com/doc/refman/5.0/en/insert-select.html

在這種情況下,結果將是:

INSERT INTO newTable (userID, SongID, Rating, GenreID) 
SELECT tb1.userID, tb1.SongID, tb1.Rating, tb2.GenreID 
FROM tab1 
LEFT JOIN tab2 
ON tab1.SongID = tab2.SongID 

如果有幾百萬條記錄,將是一個想法,創建TAB1和TAB2上SONGID的索引。

+0

..這是最簡單的方法..我有約717萬條記錄....是使用hadoop或smethg的任何其他解決方案? –