2011-08-16 65 views
1

在DB2中,我有一個表:導入命令

CREATE TABLE test (test_id INTEGER NULL, test_name VARCHAR(255) NOT NULL, test_test VARCHAR(255)) 

現在我想將數據導入到這個表以及所使用的命令

IMPORT from '/home/test.txt' of del MODIFIED BY LOBSINFILE INSERT INTO test 

如果test.txt文件包含它工作正常下面的內容。

\N, "aaaaaaa", "aaaaaaa" 
\N, "bbbbbbb", "bbbbbbb" 

但是,如果文本文件包含下面的數據,它會插入多條記錄。

\N, "<section>\ 
       <id root=\"84f194ae-f573-4249-8368-e38c74891965\"/>\ 
       <code code=\"34071-1\" codeSystem=\"2.16.840.1.113883.6.1\" displayName=\"WARNINGS SECTION\"/>\ 
       <title>Warnings</title>\ 
       <text>\ 
        <paragraph>For external use only, do not use in the eye area.<br/>\ 
        </paragraph>\ 
       </text>\ 
       <effectiveTime value=\"20100225\"/>\ 
      </section>","aaaaaaa" 
\N, 'bbbbbbb', 'bbbbbb' 

什麼可能是錯誤的?

回答

1

嘗試逃脫在你的數據報價與其他報價是這樣的:

\N, "<section>\ 
       <id root=""84f194ae-f573-4249-8368-e38c74891965""/>\ 
       <code code=""34071-1"" codeSystem=""2.16.840.1.113883.6.1"" displayName=""WARNINGS SECTION""/>\ 
      <title>Warnings</title>\ 
      <text>\ 
       <paragraph>For external use only, do not use in the eye area.<br/>\ 
       </paragraph>\ 
      </text>\ 
      <effectiveTime value=""20100225""/>\ 
     </section>","aaaaaaa" 

然後用這個導入語法:

IMPORT from '/home/test.txt' of del MODIFIED BY DELPRIORITYCHAR XMLPARSE PRESERVE WHITESPACE INSERT INTO test 

此外,爲varchar(255)是不是足夠大的例。

+1

另請注意,DB2沒有看到'\'作爲續行字符。 DELPRIORITYCHAR是這個答案的關鍵。如果您在文本中添加了「\」以嘗試使IMPORT正常工作,則可以安全地刪除這些額外的字符。 –

+0

非常感謝。它運作良好。我已經給出了最大尺寸來將數據作爲CLOB(2G)插入。 BUT的一些數據將被截斷bcos的空間。我可以提高大於2G的CLOB大小嗎? – Coder

0

從DB2參考指南:「注意:XML數據不能直接存儲在分隔文件中的基本錶行中,它必須放在單獨的文件中並使用XDS引用。

您不能像這樣導入XML數據(或任何暗示新行的內容 - 這也適用於LOBs)。相反,您需要在列中指定的是XML文件名,導入文件類型將爲DEL XML而不是DEL

檢查Exporting XML data有關更多說明。