0

我正在尝试连接到 db2 数据库(server2)以将数据从表导出到 csv 文件,为此我使用本地服务器(server1)中的 clpplus(我想将 csv 导出到),我想要的原因要在 server1 上的 CSV 文件是我想使用 COPY 命令将其导入到 VERTICA 数据库

clpplus db2admin/Password@server2-ip:50000/SAMPLE

然后我跑

EXPORT TO C:\Data\alarms.csv OF DEL MODIFIED BY NOCHARDEL SELECT * FROM v_alarms;

问题是该alarms.csv文件是在 server2 上创建的,但我希望它在 server1 上创建。我尝试了类似的东西

EXPORT TO server1-ip\C:\Data\alarms.csv OF DEL MODIFIED BY NOCHARDEL SELECT * FROM v_alarms;

但似乎不起作用,因为它返回 I/O 错误

SQL3001C 打开输出文件时发生 I/O 错误(原因 =“sqlofopn -2029060079”)

db2level命令返回:在 server1 上:

DB21085I 此实例或安装(实例名称,如果适用:“DB2”)使用“64”位和 DB2 代码版本“SQL11050”,级别标识符为“0601010F”。信息性标记是“DB2 v11.5.0.1077”、“s1906101300”、“DYN1906101300WIN64”和 Fix Pack“0”。产品安装在“C:\PROGRA~1\IBM\SQLLIB”,DB2 副本名称为“DB2COPY1”。

在服务器 2 上:

DB21085I 此实例或安装(实例名称,如果适用:“DB2”)使用“64”位和 DB2 代码版本“SQL11050”,级别标识符为“0601010F”。信息性标记是“DB2 v11.5.0.1077”、“s1906101300”、“DYN1906101300WIN64”和 Fix Pack“0”。产品安装在“C:\PROGRA~1\IBM\SQLLIB”,DB2 副本名称为“DB2COPY1”。

4

2 回答 2

1

使用 Db2 11.5/Db2 Warehouse,您可以使用EXTERNAL TABLES 通过 CLPPlus 导出数据,例如:

/opt/ibm/db2/v11.5/bin/clpplus <myuser>/<myspass>@<host>:50000/BLUDB

然后:

SQL> Export external to '/tmp/data.del' options(REMOTESOURCE 'JDBC') select * from db2inst1.mytab ;
DB250000I: The command completed successfully.

REMOTESOURCE是将数据存储在与服务器不同的位置的关键字(例如,您可以在发送前使用 LZ4 压缩数据,如果数据集很大,这会有所帮助)。

有关可能的options值,请参阅CREATE EXTERNAL TABLE. 当然,您也可以使用完整的 Db2 客户端,正如 mao 解释的那样。

于 2019-10-11T10:14:52.250 回答
1

您正在使用 Db2-LUW v11.5(当前是最新版本),它在此链接上记录了以下 CLPPlus restructuib :

IMPORT、EXPORT 和 LOAD 命令有一个限制,即处理的文件必须在服务器上(注意:仅适用于 CLPPlus)。

v11.5 有不同的选项(与早期版本相比),具体取决于您要创建 CSV 文件的原因。

v11.5 的一种选择是使用外部表,即将真实表的内容复制到外部表中,然后使用 clpplus 命令export (external table)使用 EXPORT CLPPlus 命令将外部表文件导出到本地服务器位置、远程客户端、IBM® Cloud Object Storage 或 AWS S3 对象存储。这可能适合您的用例,只有您可以决定。您需要研究文档以获取详细信息。使用此选项,您可以继续使用 CLPPlus,并且不需要以下任何内容。

另一个较旧的选项是忽略 CLPplus,而是使用旧的db2命令行处理器,它有一个 EXPORT 命令,可以将输出文件本地写入它正在运行的位置。如果您已经拥有一组依赖于 CLP 的脚本,则此选项很有用,就像许多旧站点已经拥有的一样。此选项有先决条件,特别是db2CLP 是可用的,它的包被绑定到目标数据库中,并且节点和数据库被编目。如果您的数据库中的一个或两个都在云上,那么如果您缺乏绑定所需包的相关权限,则此选项可能会令人沮丧。这些活动(绑定、编目、导出)都不是编程,它们都是配置,通常由 DBA 或 devops 脚本完成。每个相关命令都详尽地记录在知识中心:

db2如果您的客户端与目标数据库的 db2 级别不同,则可能需要绑定 CLI 实用程序。因此,只有当您收到提及 CLI 包未绑定或丢失的错误时,您才需要执行此操作。

目录操作。在 server1 上,您将使用db2 catalog tcpip node s2node...定义 server12 的详细信息。请参阅文档catalog tcpip node。接下来,您运行db2 catalog database ... at node s2node以指向 server2 节点上的远程数据库,请参阅文档catalog database。然后db2 terminate

在 server1 上使用 CLP,db2 connect to ... user ... using ...连接到 server2 数据库,最后db2 EXPORT TO\] C:\Data\alarms.csv OF DEL MODIFIED BY NOCHARDEL SELECT * FROM schemaname.v_alarms

于 2019-10-11T10:20:53.327 回答