2016-08-02 222 views
0

我正在嘗試導出DB2選擇頭銜。但是,沒有任何成功,我實際的代碼是:導出DB2選擇爲帶頭文件的CSV

db2 "EXPORT TO /tmp/result5.csv OF DEL MODIFIED BY NOCHARDEL SELECT 1 as id, 'DEVICE_ID', 'USER_ID' from sysibm.sysdummy1 UNION ALL (SELECT 2 as id, DEVICE_ID, USER_ID FROM MOB_DEVICES) ORDER BY id" 

它不工作(我建議,因爲USER_ID是整數),當我改變它:

db2 "EXPORT TO /tmp/result5.csv OF DEL MODIFIED BY NOCHARDEL SELECT 1 as id, 'DEVICE_ID', 'PUSH_ID' from sysibm.sysdummy1 UNION ALL (SELECT 2 as id, DEVICE_ID, PUSH_ID FROM MOB_DEVICES) ORDER BY id" It works because DEVICE_ID and PUSH_ID is both VARCHAR. 

它的工作原理,DEVICE_ID和PUSH_ID是兩個VARCHAR。

MOB_DEVICE TABLE任何建議如何解決這個問題?

感謝您的諮詢。

回答

0

DB2不會導出包含標題的CSV文件,因爲標題將作爲數據包含在內。通常,CSV文件用於存儲而不是查看。如果要查看帶有標題的文件,可以選擇以下選項:

  • 導出到IXF文件,但該文件不是平面文件。您將需要一個電子表格來查看它。
  • 導出到一個CSV文件,包括標題是:
    • 從名稱的列名,然後執行一個額外的步驟將其添加到該文件。您可以使用describe命令或爲此執行syscat.columns上的選擇,但此過程是手動的。
    • 執行選擇聯合,一部分是數據,另一部分是頭部。
  • 執行選擇並將輸出結果輸出到文件。不要使用導出。
    • SELECT * FROM myTable的> myTable的
+0

我創建了一個問題要問如何讓SQL http://stackoverflow.com/questions/38726949/return-a-row-in-a-db2-function-with-variable-列名量 - 的標量參數 – AngocA

0

忽略的出口,因此只是在有問題的UNION專門尋找ALL查詢:

的DB2 SQL將要遵循的數據不匹配的數據類型轉換爲數字數據類型;在這種情況下,轉換爲INTEGER數據類型。由於顯着,字符串值'USER_ID'不是數值的有效表示,該值不能被轉換爲INTEGER值。

但是,我們可以顯式地請求反轉該[爲了將SQL從字符串轉換爲數字],以確保SQL服從期望的效果,將INTEGER值從列轉換爲VARCHAR值;即顯式轉換可以確保UNION的公共列之間的數據類型兼容,方法是強制INTEGER列中的值爲匹配字符的常量字符串值'USER_ID'的數據類型:

with 
    mob_devices (DEVICE_ID, USER_ID, PUSH_ID) as 
    (values(varchar('dev', 1000), int(1), varchar('pull', 1000))) 
(SELECT 1 as id, 'DEVICE_ID', 'USER_ID' 
    from sysibm.sysdummy1 
) 
UNION ALL 
(SELECT 2 as id, DEVICE_ID , cast(USER_ID as varchar(1000)) 
    FROM MOB_DEVICES 
) 
ORDER BY id