本节介绍用于导出点、边的方法。
export()
导出图中的点或边。
参数
exportRequest: ExportRequest
:导出请求的配置,包括dbType
、schema
、selectProperties
和graph
。listener: ExportListener
:导出数据时执行的监听函数。config: RequestConfig
(可选):请求配置。
返回值
- 无
// Exports 'account' nodes in the graph 'miniCircle'
Ultipa.ExportRequest exportRequest = Ultipa.ExportRequest.newBuilder()
.setDbType(Ultipa.DBType.DBNODE)
.setSchema("account")
.setGraph("miniCircle")
.addSelectProperties("_id")
.addSelectProperties("name")
.addSelectProperties("year")
.build();
driver.export(exportRequest, new ExportListener() {
FileWriter csvWriter;
String schemaName = exportRequest.getSchema();
String suffix = exportRequest.getDbType() == Ultipa.DBType.DBNODE ? "_node.csv" : "_edge.csv";
String fileName = schemaName + suffix;
{
try {
csvWriter = new FileWriter(fileName);
csvWriter.append("_id,name,year\n"); // header row
} catch (IOException e) {
throw new RuntimeException("Failed to create CSV file", e);
}
}
public void onReady() {
System.out.println("Start downloading");
}
public void onError(Throwable t) {
System.out.println("Error occurred while downloading: " + t.getMessage());
}
public void onComplete() {
System.out.println("Download complete");
try {
if (csvWriter != null) csvWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public void next(ExportData result) {
List<Node> nodes = result.getNodes();
for (Node node : nodes) {
try {
List<String> values = Arrays.asList(
String.valueOf(node.getID()),
String.valueOf(node.get("name")),
String.valueOf(node.get("year"))
).stream().map(val -> "\"" + val + "\"").collect(Collectors.toList()); // wrap values in quotes
csvWriter.append(String.join(",", values)).append("\n");
} catch (IOException e) {
System.err.println("Failed to write a row to CSV: " + e.getMessage());
}
}
}
});
Download complete
导出文件account_nodes.csv
将保存到项目文件根目录中。
完整示例
package com.ultipa.www.sdk.api;
import com.ultipa.Ultipa;
import com.ultipa.sdk.UltipaDriver;
import com.ultipa.sdk.connect.conf.UltipaConfig;
import com.ultipa.sdk.operate.command.listener.ExportListener;
import com.ultipa.sdk.operate.entity.*;
import com.ultipa.sdk.operate.response.ExportData;
import org.assertj.core.util.Lists;
import java.util.Arrays;
import java.util.List;
import java.io.FileWriter;
import java.io.IOException;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
UltipaConfig ultipaConfig = UltipaConfig.config()
// URI example: .hosts(Lists.newArrayList("d3026ac361964633986849ec43b84877s.eu-south-1.cloud.ultipa.com:8443"))
.hosts(Lists.newArrayList("192.168.1.85:60061","192.168.1.88:60061","192.168.1.87:60061"))
.username("<username>")
.password("<password>");
UltipaDriver driver = null;
try {
driver = new UltipaDriver(ultipaConfig);
// Exports 'account' nodes in the graph 'miniCircle'
Ultipa.ExportRequest exportRequest = Ultipa.ExportRequest.newBuilder()
.setDbType(Ultipa.DBType.DBNODE)
.setSchema("account")
.setGraph("miniCircle")
.addSelectProperties("_id")
.addSelectProperties("name")
.addSelectProperties("year")
.build();
driver.export(exportRequest, new ExportListener() {
FileWriter csvWriter;
String schemaName = exportRequest.getSchema();
String suffix = exportRequest.getDbType() == Ultipa.DBType.DBNODE ? "_node.csv" : "_edge.csv";
String fileName = schemaName + suffix;
{
try {
csvWriter = new FileWriter(fileName);
csvWriter.append("_id,name,year\n"); // header row
} catch (IOException e) {
throw new RuntimeException("Failed to create CSV file", e);
}
}
public void onReady() {
System.out.println("Start downloading");
}
public void onError(Throwable t) {
System.out.println("Error occurred while downloading: " + t.getMessage());
}
public void onComplete() {
System.out.println("Download complete");
try {
if (csvWriter != null) csvWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public void next(ExportData result) {
List<Node> nodes = result.getNodes();
for (Node node : nodes) {
try {
List<String> values = Arrays.asList(
String.valueOf(node.getID()),
String.valueOf(node.get("name")),
String.valueOf(node.get("year"))
).stream().map(val -> "\"" + val + "\"").collect(Collectors.toList()); // wrap values in quotes
csvWriter.append(String.join(",", values)).append("\n");
} catch (IOException e) {
System.err.println("Failed to write a row to CSV: " + e.getMessage());
}
}
}
});
} catch (InterruptedException e) {
throw new RuntimeException(e);
} finally {
if (driver != null) {
driver.close();
}
}
}
}