我们正在使用 SAP SLT 将 HANA 上的 SAP ECC 6.0 中的表复制到 Oracle 10g 仓库中。自开始以来,我们注意到NOT NULL
HANA 中的列定义保留在表的 Oracle 副本中,但 HANA 将许多值存储为空字符串。Oracle 将空(varchar)字符串存储为NULL
s 并且不知何故这与NOT NULL
列定义不冲突(即我们NULL
在列中定义为NOT NULL
)。
查询这些表会产生奇怪的结果:
SELECT COUNT(*) FROM warehouse.table WHERE col IS NULL;
0
SELECT COUNT(*) FROM warehouse.table WHERE col = '';
0
SELECT COUNT(*) FROM warehouse.table GROUP BY NVL(col,'N');
X 503206
N 2377222
Run Code Online (Sandbox Code Playgroud)
所以我们可以通过使用或函数来 NULL
判断这些列中有值,但是查询它们会返回奇怪的结果。NVL
DECODE
一旦我们改变了列,我们就会得到正确的结果:
ALTER TABLE warehouse.table MODIFY (col NULL);
Table altered.
SELECT COUNT(*) …
Run Code Online (Sandbox Code Playgroud) 试图了解 SAP Hana S/4 1610 哪些是可能的,哪些是不可能的。
我的理解是,只需使用安装了所需 ODBC 驱动程序的 SAP HANA 客户端,就可以通过 ODBC 访问底层 SAP HANA DB。根据我所读到的内容,一旦安装,就可以使用 SSIS 等工具通过标准 ODBC 调用访问支持 SAP ERP 的大量数据存储。
但是,我被告知其他人提供的相互矛盾的信息是否可能,并且真正需要的是供应商控制该过程并让他们在 ABAP 中编写应用程序,这些应用程序将询问底层数据库并交付我们的 ETL 过程将使用的平面文件。
我们将使用本地托管的 SAP HANA 安装,因此,不在本地,但也没有阴天。
说明:我在这里只需要一个是,您可以通过 ODBC 连接到 SAP HANA S/4 1610,也可以否,您不能,并且需要另一种方法。
TBH 对如何也不感兴趣,因为我在网上阅读的其他所有内容都告诉我这一点。然而,当你每小时 100 亿美元的顾问说不时,人们不得不质疑现实。