2011-07-15 101 views
0

下面的代碼我試圖產生正試圖做到這一點:的Perl - 文件內容導入到另一個文件

我試圖做的是運行BTEQ腳本從數據庫獲取數據然後導出到一個平面文件,該平面文件被選中我的Perl腳本(上面的代碼),然後這篇文章試圖讓Perl導入該文件它進入一個fastload文件。這是否更有意義?

while (true) { 
    #Objective: open dir, get flat-file which was exported from bteq 
    opendir (DIR, "C:/q2refresh/") or die "Cannot open /my/dir: $!\n"; #open directory with the flat-file 
    my @Dircontent = readdir DIR; 
    $filetobecopied = "C:/q2refresh/q2_refresh_prod_export.txt"; #flatfile exported from bteq 
    $newfile = "C:/q2refresh/Q2_FastLoadFromFlatFile.txt"; #new file flat-file contents will be copied to as "fastload" 
    copy($filetobecopied, $newfile) or die "File cannot be copied."; 
    close DIR; 
    my $items_in_dir = @Dircontent; 
     if ($items_in_dir > 2) { # > 2 because of "." and ".." 
-->>>>>>  # take the copied FlatFile above and import into a fastload script located at C:/q2refresh/q2Fastload.txt 
     } 
     else {sleep 100;} 
} 

我需要執行上述粗體部分幫助。如何將C:/q2refresh/Q2_FastLoadFromFlatFile.txt的內容導入位於C:/q2refresh/q2Fastload.txt的快速腳本。

//我很抱歉,如果這有些新鮮,但我是Perl新手。

謝謝。

+0

什麼「粗體部分」?粗體格式將被代碼示例格式覆蓋。 – TLP

+0

參見上文 - >>>>>>。 – Jshee

+0

我認爲你需要澄清你到底想要做什麼。這段代碼真的沒有解釋任何東西。它看起來像你想創建一個永無休止的循環,它不斷地複製文件到每個循環覆蓋自己。 – TLP

回答

0
if ($items_in_dir > 2) { # > 2 because of "." and ".." 

以及包括...,加上q2_refresh_prod_export.txt兩個副本的時候,你總是會在目錄中有2頁以上的文件。如果發生這種情況q2_refresh_prod_export.txt未被複制,腳本將die所以else子句將永遠不會被調用。

此外,將文件複製到新位置是毫無意義的,如果您只是簡單地將它複製到另一個位置。它不像「剪切&粘貼」,實際上,您將文件物理複製到新文件,而不是剪貼板。

如果「導入到」的意思是你要的q2_refresh_prod_export.txt內容附加到現有q2Fastload.txt,有很多方法可以做到這一點,比如什麼特洛伊在另一個答案建議,與open>>(追加) 。

你必須理清這整個$items_in_dir條件的含義。您正在保存文件並將文件複製到該目錄中,那麼您究竟在檢查什麼?文件是否全部被刪除(通過其他進程)?

0

我不能告訴你想要做什麼。難道你只是想這樣做?

open SOURCE, $newfile; 
open SINK, '>>C:/q2refresh/q2Fastload.txt'; 
while (<SOURCE>) { 
    print SINK $_; 
} 
close SOURCE; 
close SINK; 

這會將$ newfile的內容附加到快速加載文件中。

+1

特洛伊 - 我想要做的是運行一個BTEQ腳本,從數據庫獲取數據,然後導出到一個平面文件,該平面文件被拿起我的Perl腳本(上面的代碼),然後嘗試這個職位讓perl將其導入到fastload文件中。這是否更有意義? – Jshee

+2

是的,這是有道理的。我認爲你的問題是迄今沒有人熟悉FastLoad或其文件格式。 – Troy

+1

@Troy這將是我的主要問題。 – TLP

相關問題