从 oracle 数据库读取数据 table 并使用 java 写入文件
Reading data from oracle database table and writing to file using java
我正在使用 JDBC 从数据库中读取数据。数据如下。
我必须使用 Post API 将此数据插入到应用程序中。为此,我需要以 API 接受的格式将数据写入文件。
所以我将按以下格式创建 OrgName.json
文件。
{
"delete": [
{
"canonicalName": "TCS"
}
],
"update": [
{
"canonicalName": "Wipro tech"
"synonyms": [
"Wipro technology"
]
},
{
"canonicalName": "Infosys"
"synonyms": [
"Infosys tech"
]
}
]
"add": [
{
"canonicalName": "Apple Computers",
"synonyms": [
"Apple"
]
},
{
"canonicalName": "Google India",
"synonyms": ["Google"]
}
]
}
所以会有3个分组。所有 update
值都会出现在 update
标签中,add
值会出现在 add
标签中,基于 OPERATION 列,delete
会出现在 delete
标签中。 ORGNAME
column
的值将是 canonicalName
file
中的名称。如果 synonyms
是 null
那么它不会存在,否则它会存在。
我在 java 中认识 JDBC。我可以使用 executeQuery
或 Preparedstatement
读取数据,并可以使用 sysout
在控制台中显示。但是我无法将数据写入上述格式的文件中。
有人可以帮助我吗?我是数据库开发人员,所以无法思考我该怎么做。即使是最小的帮助对我来说也是很多。
我想将 Resultset
转换成上面的文件,但我做不到。
Jackson 是一个非常有用的库,用于处理 JSON.
根据您问题中的示例 JSON,您可以创建简单的 POJO 来模拟 JSON 结构,然后利用 Jackson 的 ObjectMapper
将 POJO 映射到String
包含您要写入的 JSON 到 File
.
下面是一个非常简单的示例,但您必须更新此示例以适当地处理数据隐藏和错误处理。
class OrganizationModificationsDto {
public List<Organization> delete;
public List<Organization> update;
public List<Organization> add;
public static String toJson( OrganizationModificationsDto dto ) throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString( dto );
}
}
class Organization {
public String canonicalName;
public List<String> synonyms;
}
ObjectMapper
也有一个 writeValue
方法,允许您将 JSON 直接写入 File
、Writer
、OutputStream
,等等
public void writeValue(File resultFile, Object value)
所以一旦你构建了 OrganizationModificationsDto
,你可以直接将 JSON 写入文件。
objectMapper.writeValue( new File("OrgName.json"), dto );
这里有一个有用的 tutorial。
由于您拥有数据库中的信息,因此分离任务很重要。
- 获取信息。完成
- 将数据库中的信息转换为对象
- 单独删除、添加、更新对象
- 打印分离的对象。
任务 1 已完成,您可以访问和检索数据。
对于任务 2,您需要创建 Data.java class 属性 orgName、同义词和操作作为字符串类型。
*包括 getter 和 setter.
您需要将此 class 视为 Table 的一个寄存器。
然后你需要以某种方式生成 Data.java 到 'replicate' 的列表 table.
可以这样做:
List<Data> dataList = new ArrayList<>();
//Your database code
ResultSet rs = pstmt.executeQuery();
while (rs.next) {
Data data = new Data();
data.setOrgName(rs.getString("OrgName"));
data.setSynonyms(rs.getString("Synonyms"));
data.setOperation(rs.getString("Operation"));
dataList.add(data);
}
您现在可以将该 dataList 打印为对象。
接下来的两个步骤可以一起完成。
对于 dataList (foreach) 中的每个对象,您可以开始生成 OrgName.json 文件。分组删除、添加和修改很重要。
可以这样做:
JSONObject obj = new JSONObject();
JSONArray delete = new JSONArray();
JSONArray modify = new JSONArray();
JSONArray add = new JSONArray();
for (Data data : dataList) {
switch (data.getOperation()){
case "delete":
//This means that its is a delete object
JSONObject obj = new JSONObject();
obj.put("canonicalName", data.getOrgName());
delete.add(obj);
break;
case "add":
//This means that its is an add object
// similar to delete
break;
case "modify":
//This means that its is a modify object
//Similar to delete
default:
break;
}
}
之后就可以使用FileWriter生成文件了。
看看这个link:write JSON object to file and execute query and iterate RS
我正在使用 JDBC 从数据库中读取数据。数据如下。
我必须使用 Post API 将此数据插入到应用程序中。为此,我需要以 API 接受的格式将数据写入文件。
所以我将按以下格式创建 OrgName.json
文件。
{
"delete": [
{
"canonicalName": "TCS"
}
],
"update": [
{
"canonicalName": "Wipro tech"
"synonyms": [
"Wipro technology"
]
},
{
"canonicalName": "Infosys"
"synonyms": [
"Infosys tech"
]
}
]
"add": [
{
"canonicalName": "Apple Computers",
"synonyms": [
"Apple"
]
},
{
"canonicalName": "Google India",
"synonyms": ["Google"]
}
]
}
所以会有3个分组。所有 update
值都会出现在 update
标签中,add
值会出现在 add
标签中,基于 OPERATION 列,delete
会出现在 delete
标签中。 ORGNAME
column
的值将是 canonicalName
file
中的名称。如果 synonyms
是 null
那么它不会存在,否则它会存在。
我在 java 中认识 JDBC。我可以使用 executeQuery
或 Preparedstatement
读取数据,并可以使用 sysout
在控制台中显示。但是我无法将数据写入上述格式的文件中。
有人可以帮助我吗?我是数据库开发人员,所以无法思考我该怎么做。即使是最小的帮助对我来说也是很多。
我想将 Resultset
转换成上面的文件,但我做不到。
Jackson 是一个非常有用的库,用于处理 JSON.
根据您问题中的示例 JSON,您可以创建简单的 POJO 来模拟 JSON 结构,然后利用 Jackson 的 ObjectMapper
将 POJO 映射到String
包含您要写入的 JSON 到 File
.
下面是一个非常简单的示例,但您必须更新此示例以适当地处理数据隐藏和错误处理。
class OrganizationModificationsDto {
public List<Organization> delete;
public List<Organization> update;
public List<Organization> add;
public static String toJson( OrganizationModificationsDto dto ) throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString( dto );
}
}
class Organization {
public String canonicalName;
public List<String> synonyms;
}
ObjectMapper
也有一个 writeValue
方法,允许您将 JSON 直接写入 File
、Writer
、OutputStream
,等等
public void writeValue(File resultFile, Object value)
所以一旦你构建了 OrganizationModificationsDto
,你可以直接将 JSON 写入文件。
objectMapper.writeValue( new File("OrgName.json"), dto );
这里有一个有用的 tutorial。
由于您拥有数据库中的信息,因此分离任务很重要。
- 获取信息。完成
- 将数据库中的信息转换为对象
- 单独删除、添加、更新对象
- 打印分离的对象。
任务 1 已完成,您可以访问和检索数据。
对于任务 2,您需要创建 Data.java class 属性 orgName、同义词和操作作为字符串类型。 *包括 getter 和 setter.
您需要将此 class 视为 Table 的一个寄存器。 然后你需要以某种方式生成 Data.java 到 'replicate' 的列表 table.
可以这样做:
List<Data> dataList = new ArrayList<>();
//Your database code
ResultSet rs = pstmt.executeQuery();
while (rs.next) {
Data data = new Data();
data.setOrgName(rs.getString("OrgName"));
data.setSynonyms(rs.getString("Synonyms"));
data.setOperation(rs.getString("Operation"));
dataList.add(data);
}
您现在可以将该 dataList 打印为对象。
接下来的两个步骤可以一起完成。 对于 dataList (foreach) 中的每个对象,您可以开始生成 OrgName.json 文件。分组删除、添加和修改很重要。
可以这样做:
JSONObject obj = new JSONObject();
JSONArray delete = new JSONArray();
JSONArray modify = new JSONArray();
JSONArray add = new JSONArray();
for (Data data : dataList) {
switch (data.getOperation()){
case "delete":
//This means that its is a delete object
JSONObject obj = new JSONObject();
obj.put("canonicalName", data.getOrgName());
delete.add(obj);
break;
case "add":
//This means that its is an add object
// similar to delete
break;
case "modify":
//This means that its is a modify object
//Similar to delete
default:
break;
}
}
之后就可以使用FileWriter生成文件了。
看看这个link:write JSON object to file and execute query and iterate RS