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