我有一個輸入檔案: $home/dir/subdir/input.txt
input.txt 的內容:
123,0000,11111,3,1,X
124,0001,11112,3,1,Y
125,0002,,4,2,Y
129,0003,11114,4,2,X
我如何使用輸入檔案將它們插入到使用 unix 腳本/plsql 的 sql 表中?
| 第 1 列 | 列2 | 第 3 列 | 第 4 列 | 第 5 列 | 第 6 列 |
|---|---|---|---|---|---|
| 123 | 0000 | 11111 | 3 | 1 | X |
| 124 | 0001 | 11112 | 3 | 1 | 是 |
| 125 | 0002 | 4 | 2 | 是 | |
| 129 | 0003 | 11114 | 4 | 2 | X |
uj5u.com熱心網友回復:
使用 unix 腳本/plsql?
Oracle 提供了幾種方法來做到這一點。
其中之一是使用SQL Loader。它的好處是您可以在自己的 PC 上完成所有操作(即源檔案可以駐留在您自己的計算機上)。它運行得非常非常快。
另一個是外部表功能。它讓您可以像訪問普通的 Oracle 資料庫表一樣訪問源檔案,即您可以撰寫SELECT從檔案中獲取資料的陳述句,然后將這些行簡單地插入到目標表中。它的缺點是您必須創建一個目錄,Oracle 物件指向一個檔案系統目錄,該目錄通常位于資料庫服務器上,因此 - 如果您不是 DBA - 您必須與某人交談以創建目錄并讓您訪問它(即授予所需的權限)。
另一種選擇 - 正如你所說,PL/SQL,是使用UTL_FILE包。您將創建一個 PL/SQL 腳本,用于打開檔案、逐行讀取并將行插入目標表中。與上一個選項類似,必須有一個您有權訪問的目錄。
至于Unix 腳本,我不確定你的意思是什么。Unix 是作業系統,它不會向資料庫中插入行。如果你想說你會創建一個腳本,然后呼叫另一個 - 資料庫 - 腳本來實際完成這項作業,那是可能的(例如,你會呼叫sqlldr可執行檔案)。
因此,這僅取決于您有權訪問什么,是否可以(或不能)訪問資料庫服務器的目錄。我不打算撰寫任何代碼(涵蓋所有這些選項會花費太多時間),但是如果您選擇走哪條路,我可以提供幫助(除了 Unix 部分;我不使用它)。
uj5u.com熱心網友回復:
使用sed插入頁眉和csvlook從csvkit為降價呈現格式化資料
$ sed '1i col1,col2,col3,col4,col5,col6' input.txt | csvlook
| col1 | col2 | col3 | col4 | col5 | col6 |
| ---- | ---- | ------ | ---- | ---- | ---- |
| 123 | 0 | 11,111 | 3 | 1 | X |
| 124 | 1 | 11,112 | 3 | 1 | Y |
| 125 | 2 | | 4 | 2 | Y |
| 129 | 3 | 11,114 | 4 | 2 | X |
或者更好
| 第 1 列 | 列2 | 第 3 列 | 第 4 列 | 第 5 列 | 第 6 列 |
|---|---|---|---|---|---|
| 123 | 0 | 11,111 | 3 | 1 | X |
| 124 | 1 | 11,112 | 3 | 1 | 是 |
| 125 | 2 | 4 | 2 | 是 | |
| 129 | 3 | 11,114 | 4 | 2 | X |
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/364453.html
