读取txt文件JSON数据以在Cloud Pub Sub中发布消息

时间:2019-04-04 10:33:40

标签: text-files google-cloud-pubsub

我正在尝试将数据发布到Cloud Pub Sub。数据采用JSON格式,并保存在我的本地文件夹中。我没有使用Cloud Storage,而是尝试直接通过cloud函数读取pubsub消息。使用手动传递的消息测试了流程,数据也被插入到Bigquery表中。我唯一被卡住的地方是,如何将@admin.register(Post) class PostAdmin(admin.ModelAdmin): fields = ["title", "body"] def get_queryset(self, request, *args, **kwargs): queryset = super().get_queryset(request, *args, **kwargs) #queryset = queryset.exclude(pk=1) queryset = queryset.exclude(title__startswith="hello") #queryset = queryset.exclude(name="Fire") # Write your own needs return queryset 文件JSON数据集传递到Cloud PubSub,

样本数据

.txt

任何人都可以给我提示吗!

我可以看到使用云存储的各种选项以及所有这些,在这里,我正在从数据库表中读取更改的数据,将这些记录插入1个虚拟表中,并将该表中的数据转换为JSON格式并写入{{1} }文件。从这里开始,如果我可以将数据发布到pubsub,整个流程将完成

如果我像下面这样手动传递,数据将被插入

  

gcloud pubsub主题发布pubsubtopic1-消息

{"ID":6,"NAME":"Komal","AGE":22,"ADDRESS":"Assam","SALARY":20000}

在4月10日进行编辑

一些如何使用批处理文件将数据从.txt文件插入pubsub的方法。但是,当我从PL SQL过程(DBMS_SCHEDULER)调用批处理文件时,它抛出错误“无法将'gcloud'识别为内部或外部命令”。但是当我从命令行调用批处理文件时,数据将被推送到pub sub和Bigquery表中。我正在使用的PFB脚本以及PL SQL代码也是如此。任何帮助将不胜感激

用于调用脚本的批处理脚本和PL SQL代码

.txt

3 个答案:

答案 0 :(得分:2)

您的bash脚本存在问题,可能是gcloud命令行工具未安装在数据库实际运行的机器上,或者不在运行该脚本的环境的PATH中,因此当您使用时,找不到该工具。 bat脚本已运行。

话虽这么说,我强烈建议您不要尝试在.bat脚本中进行数据处理并将其传递给命令行工具,因为这很容易出错,并且由于效率低下而导致的开销很大JSON编码,以及为每条消息启动和关闭发布者客户端。相反,我建议您考虑改为以CSV格式导出数据,并使用client libraries之一读取此文件并发布到Cloud Pub / Sub。仍然可以通过您在下面提到的数据库cron作业来触发此操作,它将更加高效和可测试。

答案 1 :(得分:1)

如果您想轻松发布单个文件的内容:

gcloud pubsub topics publish ${PUBSUB_TOPIC_NAME} --message "$(cat ${FILE_NAME} | jq -c)"

答案 2 :(得分:0)

如果文件中包含的Json数据是一个数组,则可以使用以下命令将该数组的每个条目发布到主题:

jq -c ".[]" json_array.json | xargs -t -I {} gcloud pubsub topics publish yourTopic --message {}

请确保已安装jq,而xargs更常见。