我需要将一个dashdb数据库中的一些表复制到单独的dashdb数据库中。通常我会从一个导出CSV文件并使用Web控制台将其加载到另一个中,但是一个表特别具有CLOB列,因此我们需要导出到ixf + lob文件然后导入它。不幸的是我看不到任何简单的方法来执行此操作,因为看起来clpplus只能导出到数据库所在的服务器(我无法访问),我看不出任何方法来获取它导出lob文件。有谁知道如何最好地完成这个?
答案 0 :(得分:0)
如果CLOB值实际上小于32K,您可以尝试将它们转换为VARCHAR值,作为您提供给EXPORT的SELECT语句的一部分。
如果您确实需要导出LOB文件,可以将它们写入dashDB实例内的用户主目录,然后使用/ home REST API下载文件,例如卷曲:https://developer.ibm.com/static/site-id/85/api/dashdb-analytics/
答案 1 :(得分: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命令行处理器中运行。