【问题标题】:how to store produced data in database?如何将生成的数据存储在数据库中?
【发布时间】:2020-06-10 13:57:34
【问题描述】:

我在 java 上创建了一个工作正常的 kafka 生产者,现在我尝试将生成的数据存储在 mySQL 数据库中,但我不知道如何。我试过这段代码,但它不起作用

try {
           String MyUrl = "jdbc:mysql://130.2.2.2/pfa";
           Class.forName("com.mysql.jdbc.Driver"); 
           Connection con = DriverManager.getConnection(MyUrl, "root", "");
           Statement stm = con.createStatement();
           ResultSet rs = stm.executeQuery("select * from tmp");

           while(rs.next()) {
               producer.send(new ProducerRecord<String, String>("test",rs.getString(1)));
               con.close();
           }
       }catch(Exception e) {System.out.println(e);}

非常感谢有关将数据发送到数据库的任何帮助

【问题讨论】:

  • 您需要使用 insert 语句,但我可以看到您正在使用 select 语句。您想在表格中插入什么,请您分享表格结构。检查这是否对您有帮助? alvinalexander.com/java/…
  • @HarmandeepSinghKalsi 是的,我同意,但这就是我发现的,我复制粘贴了它,因为作者说它有效。我认为“发送”方法是负责发送的方法,这就是为什么我没有更改“选择”
  • 那么您已经获得了有关 Kafka 主题的数据,并且您想将其写入数据库?或者您想将数据库中的数据读入 Kafka 主题?无论哪种方式,您都应该使用 Kafka Connect(它是 Apache Kafka 的一部分)
  • @RobinMoffatt 我想写入数据库
  • idownvotedbecau.se/itsnotworking。你可以在网上找到很多关于 kafka jdbc sink 的例子(大部分来自 Robin)

标签: java mysql database apache-kafka kafka-producer-api


【解决方案1】:

我不确定我是否理解您期望从该代码中发生的事情。

  1. 你正在从数据库中读取,从不插入它

  2. 您在每次循环迭代后关闭数据库连接,这意味着您将收到数据库已在第二次循环中关闭的异常,因此结果集也可能终止(我有点模糊这些是否是惰性对象)

我可以建议您关注 JDBC 连接器上的深入了解吗? https://dev.to/rmoff/kafka-connect-jdbc-sink-tips-tricks-video-walkthrough-2egf

我复制粘贴它是因为作者说它有效

这绝不是学习任何东西的好方法。您可以阅读代码并将其全部输入,边走边向自己解释......但切勿盲目复制您认为可以解决问题的内容

【讨论】:

  • 使用“insert”语句时的问题是在“values”关键字之后的字段中输入什么?意思是如何引用生产者生产的物品?知道我在 java 上有一个完美运行的生产者
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-28
  • 1970-01-01
  • 1970-01-01
  • 2011-11-09
  • 1970-01-01
相关资源
最近更新 更多