2015-02-11 41 views
0

我有一個數據庫有6列和幾千行,我想將這些內容導出到單獨的命名文本文件中。將SQL行導出到多個文本文件並命名它們

id title text    text_2 
1 blah lorem ipsem...  indigo violet... 
2 gunf ipsem lorem...  up down left... 
3 faff sir I have a...  amarillo albuquerque... 

我想創建的每一行下面的文本文件:

名= ID - title.txt; content = title

filename = id - title.txt; content = text

filename = id - title.txt; content = text_2

我看了一下,不知道該怎麼做。我曾經在Excel中使用宏來將單元格轉換爲txt,但文本太大而無法使用Excel的單元格字符限制。我正在使用SQLite,但我沒有與它結合(儘管寧願不必購買一個程序,如果我可以避免它)。

任何建議怎麼辦?雖然不是太棘手,我可以遵循一些基本的代碼。

+0

你在說每行你想創建同一個文件3次,但內容不同。你能更精確嗎?這些假設是不是3個不同的文件?或者它是3行內容的單個文件? – Googie 2015-02-12 09:57:24

回答

0

您可以使用SQLiteStudio 3.x.x,它是自定義的SQL函數。

打開「自定義SQL函數編輯器」(帶有「fx」圖標的編輯器)並添加新函數,我們將其稱爲saveToFile。選擇Tcl作爲實現語言(位於右上角),將「Type」保留爲Scalar。如果你想要,你可以定義輸入參數(這不是強制性的,只是這樣,代碼助手稍後會在調用此函數時幫助你):fileNamecontents。保持「在所有數據庫中註冊」選項也是可以的。

現在最重要的事情 - 輸入下面的實現代碼:

if {[catch { 
    lassign $argv fileName contents 
    set fd [open "C:/tmp/a/$fileName" a+] 
    puts $fd $contents 
    close $fd 
} res]} { 
    return "error: $res" 
} else { 
    return "ok" 
} 

的代碼包含C:/tmp/a這是您的文件將被創建的目錄路徑。將其改爲任何你想要的。該目錄必須存在。

提交你的函數(提交按鈕位於函數編輯器之上)。

現在打開SQL編輯器窗口(帶有白紙和一支鉛筆)和類型的查詢是這樣的:

SELECT saveToFile(id || ' - ' || title || '.txt', title || x'0a' || text || x'0a' || text_2) AS result FROM table_name; 

這個查詢將創建每行一個文件,並把titletexttext_2列,文件中有3個單獨的行。

查詢將返回每個行狀態ok時沒有問題,或error: ...與錯誤的詳細信息出現問題時,例如創建一個文件。

+0

謝謝!你是對的,它是3個不同內容的文件。代碼爲我工作,我調整了SQL編輯器查詢,只是在內容中包含標題,它的工作。IT在製作文件時不喜歡標題中的奇怪字符(例如'/'),所以我只是告訴它將URL編碼,然後重命名文件。不漂亮,但完成這項工作。 – JRUK 2015-02-13 22:22:13

相關問題