Giu*_*cas 9 postgresql insert blob
我必须将 .pdf 文件存储在表格中。
我有一个表,state列:
id_state,
name,
pdffile (bytea)
Run Code Online (Sandbox Code Playgroud)
我想将 pdf 文件存储在 pdffile 列中。
我怎样才能做到这一点?
首先,我将 PDF 作为 bytea 存储在数据库中。它们比大型对象更容易管理,而且您确实无法从流 API 中获得太多收益(现在,流视频,应该进入 lob)。这样做的一个真正问题是,当数据返回数据库时,需要额外的内存来转义数据,并且您实际上无法有效地传输它。
关键是当数据返回时,您必须对数据进行转义。与其他编程语言一样,libpq 也提供了相应的函数。有一些(如 Perl)提供了自动处理这些情况的数据库驱动程序。
您在这里找到了正确的结构。将其存储为字节并在检索时取消转义。
为了实现这一目标,我使用了该库lipq。它是 postgresql 的 C API。
const char *paramValues[2];
paramValues[0] = &your_id;
paramValues[1] = &binaryContentOfPdfFile;
res = PQexecParams(pConnection, "insert into my_table (id_state, pdffile)
VALUES ($1, $2);",
2, /* params */
NULL, /* let the backend deduce param type */
paramValues,
NULL, /* don't need param lengths since text */
NULL, /* default to all text params */
0);
Run Code Online (Sandbox Code Playgroud)
pyODBC我想这与其他 API(如或 )没有什么不同psqlODBC。这取决于您选择的库。你没有说你使用哪个API。
但是:您还应该考虑仅将 pdf 文件的 URI/URL 存储在数据库中。
| 归档时间: |
|
| 查看次数: |
37546 次 |
| 最近记录: |