2012-04-09 243 views
1

我有一大堆包含超过300000个PostgreSQL中的插入命令。我甚至无法将其加载到pgAdmin(它崩溃)。所以我使用命令行和\ i来执行该文件。 我想查看错误消息(如果有的话)。我如何通过命令行将消息保存到日志文件中? 感谢您的帮助 谢谢如何将sql命令结果保存到文件(postgresql)

编辑 我已经看到了一些other posts却忍不住。

+0

300000插入命令?从文件中读取数据不是更容易吗? – wildplasser 2012-04-09 09:39:30

+0

@wildplasser :)我刚刚将XML文件转换为插入命令来填充数据库。这就是雇主所要求的:数据库! “从文件中读取数据”?你是否建议另一个解决方案来完成它?请帮忙。谢谢 – rahman 2012-04-09 09:43:03

+1

如果XML只包含一个(或几个)矩形数据表,它可以转换成.csv(或.tsv)文件相对容易。 (比转换成插入语句更容易,恕我直言) – wildplasser 2012-04-09 09:46:06

回答

2

从unix-prompt:(windows可能有类似的机制)。

psql -U my_username my_databasename <the_script.sql>the_output.log 

UPDATE:上述命令假定执行它能够读取“the_script.sql”并且用户可以写入用户“the_output.log”(在这种情况下,在当前目录)。如果你不能写有某种原因,你总是可以写到/ tmp,如psql -U my_username my_databasename <the_script.sql>/tmp/other_output.log

+0

我用我自己的帐户(vahid)登录并且数据库所有者是postgres。所以命令如下所示:vahid @ vahid -ThinkPad-T420:〜/ workspace/MATSIM $ psql -U postgres MATEST ./res.txt psql:FATAL:用户“postgres”的对等身份验证失败 – rahman 2012-04-09 09:55:59

+0

做一个sudo没有改变任何东西 – rahman 2012-04-09 09:56:45

+0

将输出文件所有者(和中间目录)更改为postgres也会产生另一个问题:$ psql -U postgres MATEST /sqlresult/res.txt bash:/ sqlresult/res .txt:权限被拒绝任何想法?谢谢 – rahman 2012-04-09 09:58:47

0
psql -e -f file_name db_name 2>&1 > log.txt 

最有趣的日志,你会发现发送到在psql标准错误,所以 重定向错误输出到标准输出和然后把它们放在一个log.txt文件中应该可以工作。

相关问题