PostgreSQL导入文件

3
在PostgreSQL和bash(linux)中,是否有直接从文件系统导入文件的方法,例如
[execute.sh] pgsql .... -f insert.txt
[insert.txt]
insert into table(id,file) values(1,import('/path/to/file'))
似乎没有导入函数,bytea_import也是如此,lo_import会保存整数,我不知道如何取回文件(这些文件很小,因此使用lo_import似乎不合适)
如何将insert.txt语句移动到PostgreSQL?
3个回答

8

我不确定你的意思,但如果你有包含SQL语句的脚本,例如你所提到的插入语句,你可以运行 psql 并从 psql 中运行该脚本。例如:

postgres@server:~$ psql dbname
psql (8.4.1)
Type "help" for help.

dbname=# \i /tmp/queries.sql

这将运行 /tmp/queries.sql 中的语句。
希望这就是你想要的。

Yap看到了这个,但我需要在Bash中使用expect,以便我可以使用import语句,我正在寻找类似于mysql中的输入管道的东西。 mysql dbname -uuser -pmypwd < /tmp/queries.sql 谢谢。 - monmonja
1
引用PostgreSQL文档:COPY在PostgreSQL表和标准文件系统文件之间移动数据。COPY TO将表的内容复制到文件中,而COPY FROM将数据从文件复制到表中(将数据附加到表中已有的任何数据)。因此,也许COPY可以帮助您。 - John P

1
如果需要更详细的参数:
$ psql -h [host] -p [port] -d [databaseName] -U [user] -f [/absolute/path/to/file]

0

我将要导入大量文本,使用cat并不理想。谢谢。 - monmonja

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接