如何在curl中将cmd行和文件数据混合在一起?

时间:2011-10-18 18:34:40

标签: curl

我已准备好通过CURL将大量JSON数据发布到数据库。但是数据库要求以某种方式格式化JSON的开头和结尾。为了不通过进入每个文件和前置和附加行来调整文件的巨大数据集...我想在文件的命令行上简单地指定附加的开始和结束文本。我不认为通过脚本编辑文件是犹太教的解决方案,直接搞乱这种原始数据流感觉不对。

相反,我发现以下mashup是一个很好的方法来实现这个目标:

curl -d "prepend_string`cat filename.json`append_string" \
-X POST http://localhost:5984/database/_bulk_docs \
-H "Content-Type: application/json"

但是这有其局限性,因为在上面的场景中,所有数据都从文件进入命令行然后发布。由于真实文件非常大,任何人都会遇到如下错误:

-bash: /opt/local/bin/curl: Argument list too long

因此,对于CURL,是否有可能将cmd行和文件数据混合在一起,以便它们成功发布(通过curl),就像在三个单独的部分中一样?

#(this is make believe syntax)
-d "prepend_string" + @filename.json + "append_string"

1 个答案:

答案 0 :(得分:3)

使用-d @filename从单个文件中读取:

curl www.example.com -d @mypostdata.txt

或使用标准输入:

echo "Beginning"$(cat mypostdata.txt)"End" | curl www.example.com -d -

或使用命名管道......