【问题标题】:load data to db2 in a single row (cell)在单行(单元格)中将数据加载到 db2
【发布时间】:2015-01-26 16:38:03
【问题描述】:

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

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

提前感谢您的回答!

【问题讨论】:

    标签: db2


    【解决方案1】:

    首先,您可能想要重新定义您的表:CLOB(5) 表示您希望列中有 5 个字节,这对于 5 MB 文件来说是不够的。之后,您可以使用带有 lobsinfile 修饰符的 DB2 IMPORTLOAD 命令。

    为每个要导入的文件创建一个文本文件并放置 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会在输入数据中生成,你不​​需要在输入文件中输入它们,只是不要忘记使用适当的命令修饰符:identitymissinggeneratedmissing,具体取决于关于如何定义 ID 列。

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

    db2 "import from /tmp/import.dat of del 
         modified by lobsinfile identitymissing
         method p (1) 
         insert into yourtable (yourclobcolumn)"
    

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

    method p (1) 表示解析输入文件并读取位置1的列。

    More info in the manual

    【讨论】:

    • 感谢您的回复!但是此命令不起作用,我收到错误“在“)”之后发现了一个意外的令牌“已修改”......”
    • 对不起,我无意中交换了他们的关键字。见更新。我还发布了手册的链接...
    猜你喜欢
    • 2021-10-16
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多