我需要将整个文件(仅包含ASCII文本)加载到数据库(DB2 Express ed。)。该表只有两列(ID,TEXT)。 ID列是PK,带有自动生成的数据,而文本是CLOB(5):我不知道输入参数5,默认情况下是在Data Studio中输入的。
现在我需要使用load实用程序将文本文件(包含5 MB数据)保存在一行中,即TEXT列中。我不希望将文本分成不同的行。
提前感谢您的回答!
答案 0 :(得分:1)
首先,您可能希望重新定义表:CLOB(5)
表示您希望列中有5个字节,这对于5 MB文件来说已经不够了。之后,您可以将IMPORT
或LOAD
命令与lobsinfile
修饰符一起使用。
为每个要导入的文件创建一个文本文件并放置LOB位置说明符(LLS),每行一个。
LLS是一种告诉IMPORT在何处查找LOB数据的方法。它有这个 格式:
<file path>[.<offset>.<length>/]
,例如/tmp/lobsource.dta.0.100/
表示前100个字节 应将文件/tmp/lobsource.dta
加载到特定的LOB中 柱。另请注意尾部斜杠。如果要导入 整个文件,跳过offset
和length
部分。 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的列。