0

我需要将一个 dashdb 数据库中的一些表复制到单独的 dashdb 数据库中。通常我会从一个导出 CSV 文件并使用 Web 控制台将其加载到另一个中,但是一个表特别有一个 CLOB 列,因此我们需要导出到 ixf + lob 文件然后导入它。不幸的是,我看不到任何简单的方法来做到这一点,因为看起来 clpplus 只能导出到数据库所在的服务器(我无权访问),而且我看不到任何方法来获取它导出 lob 文件。有谁知道如何最好地做到这一点?

4

2 回答 2

0

另一种选择是将带有 LOB 的表导出到本地计算机,然后导入另一个 dashDB。

将 dashDB 表导出到本地客户端的一种方法是在客户端机器上的 DB2 命令行处理器 (CLP) 中运行 EXPORT 命令。为此,您需要安装 IBM Data Server Runtime Client,然后在客户端中对 dashDB 数据库进行编目,如下所示:

CATALOG TCPIP NODE mydash REMOTE  dashdb-txn-small-yp-lon02-99.services.eu-gb.bluemix.net SERVER 50000;
CATALOG DATABASE bludb AS dash1 AT NODE mydash;
CONNECT TO dash1 USER <username> USING <password>;

现在,让我们导出名为“mytable”的表,以便将 LOB 列写入单独的文件:

export to mytable.del of del 
      lobfile mylobs
      modified by lobsinfile
      select * from mytable;

此导出命令生成文件 mytable.del 和 mylobs.001.lob。文件 mytable.del 包含指向文件 mylobs.001.lob 的指针,这些指针指定每个值的偏移量和长度。

如果 LOB 数据太大而无法放入单个文件中,则会创建其他文件 mylobs.002.lob、mylobs.003.lob 等。

请注意,导出的数据将以未压缩的形式从 dashDB 发送到您的本地客户端,这可能需要一些时间,具体取决于数据量。


如果 .DEL 和 .LOB 文件驻留在客户端计算机上,例如您的笔记本电脑或本地服务器,您可以使用 IMPORT 命令将这些文件摄取到具有 LOB 列的表中。在 CLP 中,您将首先连接到要加载到的 dashDB 数据库。

假设原始表已导出到文件 mytable.del 和 mylobs.001.lob,并且这些文件现在位于您的客户端计算机上的目录 /mydata 中。然后此命令会将数据和 LOB 加载到目标表中:

IMPORT FROM /mydata/mytable.del OF DEL
   LOBS FROM /mydata 
   MODIFIED BY LOBSINFILE
   INSERT INTO mytable2;

这个 IMPORT 命令可以在您的客户机上的 DB2 命令行处理器中运行。

于 2017-04-06T19:46:58.807 回答
0

如果 CLOB 值实际上小于 32K,您可以尝试将它们转换为 VARCHAR 值,作为您提供给 EXPORT 的 SELECT 语句的一部分。

如果您确实需要导出 LOB 文件,您可以将它们写入 dashDB 实例内的用户主目录,然后使用 /home REST API 下载文件,例如使用 curl:https ://developer.ibm.com/static/site -id/85/api/dashdb-analytics/

于 2017-04-06T12:38:36.513 回答