我希望将数百万行批量加载到DashDB数据库中。使用DB2 CLI连接后,输入如下命令:
db2 import from rowsToImport.csv of del insert into MY_TABLE
结果:
SQL0551N "DASHXXX" does not have the required authorization or privilege to
perform operation "BIND" on object "NULLID.SQLUAJ19". SQLSTATE=42501
这是DashDB的固有限制,还是我的客户端配置不正确?我在尝试db2 load
时收到类似的消息:
SQL2019N An error occurred while utilities were being bound to the database.
P.S。我知道DashDB的其余客户端api用于加载数据 - 我特别询问如何使用DB2命令行作为备用选项来完成批量加载。
答案 0 :(得分:3)
根据dashDB documentation,您可以使用Command line processor plus (CLPPlus)。它包含在dashDB驱动程序包中,并提供了一个命令行用户界面,可用于连接到dashDB数据库BLUDB。您可以使用CLPPlus来定义,编辑和运行语句,脚本和命令。请查看Connecting CLPPlus to the dashDB database以了解如何连接和使用CLI。
请注意,在CLPPlus中:IMPORT,EXPORT和LOAD命令限制处理文件必须在服务器上:请参阅here。因此,您应首先使用SCP将输入加载文件复制到远程服务器上。但是,对于普通的dashDB用户,应该阻止(不可访问)SSH / SCP协议。
只能使用CLPPlus中的IDA LOADGEOSPATIALDATA command将地理空间数据从本地计算机加载到dashDB。 使用上述命令在dashDB中加载的文件可以在本地文件系统中,可供CLPPlus用户访问。
这样做的替代方法是:
dashDB REST API(如您所述)。请参阅Load delimited data using the REST API and cURL。
直接从Bluemix上的dashDB仪表板加载csv。请参阅Loading data from the desktop into IBM dashDB。
使用IBM Data Studio加载csv。请参阅dashDB large file load using IBM Data Studio。
答案 1 :(得分:2)
根据this technote,程序包NULLID.SQLUAJ19属于早期DB2 10.1修订包之一,因此我怀疑您的客户端版本是10.1。当尝试执行IMPORT
命令时,它需要绑定旧版本的一些软件包,因为dashDB是DB2 10.5,显然。
您可能希望尝试安装最新的DB2客户端修订包,因为必要的包可能已绑定在数据库中。
要验证您是否可以运行select pkgname from syscat.packages where pkgschema = 'NULLID' and pkgname like 'SQLUA%'
- 您应该看到" SQLUAK20",它似乎是DB2 10.5中的相应软件包。
如果这不起作用,那么您的另一个选择可能是转移到专用的dashDB实例,因为您没有足够的权限来绑定入门级共享dashDB服务中缺少的包。