将数据加载到单行中的db2(单元格)

时间:2015-01-26 16:38:03

标签: db2

我需要将整个文件(仅包含ASCII文本)加载到数据库(DB2 Express ed。)。该表只有两列(ID,TEXT)。 ID列是PK,带有自动生成的数据,而文本是CLOB(5):我不知道输入参数5,默认情况下是在Data Studio中输入的。

现在我需要使用load实用程序将文本文件(包含5 MB数据)保存在一行中,即TEXT列中。我不希望将文本分成不同的行。

提前感谢您的回答!

1 个答案:

答案 0 :(得分:1)

首先,您可能希望重新定义表:CLOB(5)表示您希望列中有5个字节,这对于5 MB文件来说已经不够了。之后,您可以将IMPORTLOAD命令与lobsinfile修饰符一起使用。

为每个要导入的文件创建一个文本文件并放置LOB位置说明符(LLS),每行一个。

  

LLS是一种告诉IMPORT在何处查找LOB数据的方法。它有这个   格式:<file path>[.<offset>.<length>/],例如   /tmp/lobsource.dta.0.100/表示前100个字节   应将文件/tmp/lobsource.dta加载到特定的LOB中   柱。另请注意尾部斜杠。如果要导入   整个文件,跳过offsetlength部分。 LLS被放入   输入文件而不是每行和LOB列的实际数据。

所以,例如:

echo "/home/you/yourfile.txt" > /tmp/import.dat

由于您说过将在输入数据中生成ID,因此您无需在输入文件中输入它们,只是不要忘记使用相应的命令修饰符:identitymissing或{{1取决于ID列的定义方式。

现在您可以连接到数据库并运行generatedmissing命令,例如

IMPORT

为了便于阅读,我将命令拆分为多行,但您应该在一行上键入它。

  

db2 "import from /tmp/import.dat of del modified by lobsinfile identitymissing method p (1) insert into yourtable (yourclobcolumn)" 表示解析输入文件并读取位置1的列。

More info in the manual