从雪花加载数组数据到neo4j

Posted

技术标签:

【中文标题】从雪花加载数组数据到neo4j【英文标题】:Load array data to neo4j from snowflake 【发布时间】:2021-12-01 13:38:53 【问题描述】:

我一直在尝试将数组列数据从雪花加载到 neo4j,但它被加载为字符串而不是数组。

我正在使用 apoc.load.jdbc 命令连接雪花并尝试检索数组列。

WITH "jdbc:snowflake://xxxx.xxxx.xxxx.com:xxx/?user=xxxxxxxxxxx&password=xxxxxxxxxxx&db=xxxx&warehouse=xxxx&schema=xxxx" as url CALL apoc.load.jdbc(url,"select array_column from TABLE') YIELD row create (c:arraytest) set c=row

Neo4j 输出:

(:arraytest array_column: "[
  \"55232d8cac\"
]")

我想加载为数组而不是像下面这样的字符串:

(:arraytest array_column: ["55232d8cac"])

有没有办法像上面提到的那样将数组作为数组加载到neo4j?

【问题讨论】:

【参考方案1】:

Snowflake JDBC 驱动不支持 getArray 方法:

https://github.com/snowflakedb/snowflake-jdbc/blob/520584ee0ee77888319f39dbd75aaec3a8c393e3/src/main/java/net/snowflake/client/jdbc/SnowflakeBaseResultSet.java#L1314

您可以使用 to_varchar() 函数将数组作为字符串获取,并使用 Neo4J 中的某些内容将其解析为数组:

create temp table T1 (A array);
insert into T1 select array_construct(1, 2, 3);
select to_varchar(A) from T1;  -- Returns [1,2,3] in string form

【讨论】:

以上是关于从雪花加载数组数据到neo4j的主要内容,如果未能解决你的问题,请参考以下文章

如何检查从 aws S3 到雪花的数据加载结果

雪花 CDC 从 S3 到雪花

预计将解析从 S3 加载的雪花数据中的列时到达记录末尾

使用 Azure 数据工厂将数据加载到雪花时出现问题

由于数据中的“雪花问题”导致部分加载

数据加载到雪花表中 - 几何数据