2011-03-23 114 views
1

我有一個具有城市名稱表和溼度表的數據庫。詳情如下:mySQL - 分鐘數據已丟失分鐘

'cityname' has 2 columns: 
-city_ID <- integer and primary key that increments automatically 
-city_full_name <- character name i.e. boston, toronto, new york city etc... 

'citymoisture' has 7 columns: 
-city_ID <- tied to the city_ID field via a Foreign Key 
-date 
-time 
-open 
-high 
-low 
-close 

我用下面的命令

mysql> LOAD DATA INFILE  'Boston 1 Minute Moisture.txt' 
    -> INTO TABLE   moisture 
    -> FIELDS TERMINATED BY ',' 
    -> LINES TERMINATED BY '\n' 
    -> IGNORE 1 LINES 
    -> (@date, @time, open, high, low, close) 
    -> SET     city_id=4, 
    ->      date=STR_TO_DATE(@date, '%m/%d/%Y'), 
    ->      time=STR_TO_DATE(@time, '%h:%i:%s %p'); 

,我發現的是,有數據差距的問題上傳數據到數據庫。當分鐘週期到來時,傳感器有時無法保存,所以有兩段時間間隔大於1分鐘的時間段。我想識別這些差距並插入我自己的數據,即理想情況下是前一分鐘數據的複本。

的數據文件的示例輸出:

Date, Time, Open, High, Low, Close 
1/4/1999,9:31:00 AM,0.943,0.943,0.943,0.943 
1/4/1999,9:32:00 AM,0.943,0.943,0.943,0.943 
1/4/1999,9:33:00 AM,0.943,0.943,0.943,0.943 
1/4/1999,9:35:00 AM,0.943,0.943,0.943,0.943 
1/4/1999,9:36:00 AM,0.943,0.943,0.943,0.943 

參見在本例中爲9點34分的數據被丟失。我想要做的是找到一種方法來確定發生的情況並進行修改。我想我可能只是將前一分鐘的數據複製到缺失的分鐘行中。

類似於如果時間[1] - 時間[0]> 1,然後插入之間的前一行。你的幫助將不勝感激。

+0

您想在哪裏進行此修改?數據庫導入後的數據庫還是導入前的文本文件? – AlG 2011-03-23 20:32:09

+0

每個城市的水分檔案都是60MB,擁有大約180萬行數據,因此可能會在確定修改位置時發揮作用。最後,我想要一個完整的數據集,這樣所有的城市都有相同數量的數據點。你建議我的朋友怎麼樣? – codingknob 2011-03-23 20:43:45

+0

無論哪種方式都有很多數據。我的直覺反應是說編輯文本文件保持輸入清潔。然後,您可以使用現有工具翻閱文本和複製行。 – AlG 2011-03-24 11:58:49

回答

0

創建一個包含所有分鐘(1440行)的表格,並在加載它之後對數據表執行左外連接。任何空行都缺少數據。

不要忘記索引。