如何在 PostgreSQL 中存储 pdf

Giu*_*cas 9 postgresql insert blob

我必须将 .pdf 文件存储在表格中。

我有一个表,state列:

id_state,
name,
pdffile (bytea)
Run Code Online (Sandbox Code Playgroud)

我想将 pdf 文件存储在 pdffile 列中。

我怎样才能做到这一点?

Chr*_*ers 5

首先,我将 PDF 作为 bytea 存储在数据库中。它们比大型对象更容易管理,而且您确实无法从流 API 中获得太多收益(现在,流视频,应该进入 lob)。这样做的一个真正问题是,当数据返回数据库时,需要额外的内存来转义数据,并且您实际上无法有效地传输它。

关键是当数据返回时,您必须对数据进行转义。与其他编程语言一样,libpq 也提供了相应的函数。有一些(如 Perl)提供了自动处理这些情况的数据库驱动程序。

您在这里找到了正确的结构。将其存储为字节并在检索时取消转义。


Ste*_*and 2

为了实现这一目标,我使用了该库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)

这是我从中获取代码的 postgresql 邮件列表线程。

pyODBC我想这与其他 API(如或 )没有什么不同psqlODBC。这取决于您选择的库。你没有说你使用哪个API

但是:您还应该考虑仅将 pdf 文件的 URI/URL 存储在数据库中。