将PL/pgSQL输出从PostgreSQL数据库保存到CSV文件的最简单方法是什么?
我正在使用PostgreSQL 8.4和pgAdmin III以及PSQL插件来运行查询.
我正在使用Python-2.6 CGI脚本,但在服务器日志中发现此错误json.dumps(),
Traceback (most recent call last):
File "/etc/mongodb/server/cgi-bin/getstats.py", line 135, in <module>
print json.dumps(??__get?data())
File "/usr/lib/python2.7/json/__init__.py", line 231, in dumps
return _default_encoder.encode(obj)
File "/usr/lib/python2.7/json/encoder.py", line 201, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/usr/lib/python2.7/json/encoder.py", line 264, in iterencode
return _iterencode(o, 0)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xa5 in position 0: invalid start byte
Run Code Online (Sandbox Code Playgroud)
在这里,
?__get?data()功能返回dictionary {}.
在发布这个问题之前,我已经提到了这个问题.
以下行是伤害JSON编码器,
now = datetime.datetime.now()
now = datetime.datetime.strftime(now, '%Y-%m-%dT%H:%M:%S.%fZ')
print json.dumps({'current_time': now}) …Run Code Online (Sandbox Code Playgroud) 我想将CSV文件复制到Postgres表.这个表中大约有100列,所以如果我不需要,我不想重写它们.
我正在使用该\copy table from 'table.csv' delimiter ',' csv;命令但没有创建表格ERROR: relation "table" does not exist.如果我添加一个空白表我没有错误,但没有任何反应.我尝试了这个命令两三次,没有输出或消息,但是当我通过PGAdmin检查时表没有更新.
有没有办法导入包含标题的表,就像我想要做的那样?
我需要使用哪个插件或库吗?我想首先在我的本地系统上尝试这个,然后在Heroku Postgresql上做同样的事情
我在OS X 10.6.8上运行PostgreSQL 9.2.6.我想将带有列标题的CSV文件中的数据导入数据库.我可以使用该COPY语句执行此操作,但前提是我首先手动创建一个包含CSV文件中每列的列的表.有没有办法根据CSV文件中的标题自动创建此表?
根据这个问题,我试过了
COPY test FROM '/path/to/test.csv' CSV HEADER;
但我只是得到这个错误:
ERROR: relation "test" does not exist
如果我首先创建一个没有列的表:
CREATE TABLE test ();
我明白了:
ERROR: extra data after last expected column
我在PostgreSQL COPY文档中找不到有关自动创建表的任何内容.是否有其他方法可以自动从带有标题的CSV文件创建表格?
我一直在使用psql Postgres终端使用以下内容将CSV文件导入表中
COPY tbname FROM
'/tmp/the_file.csv'
delimiter '|' csv;
Run Code Online (Sandbox Code Playgroud)
哪个工作正常,但我必须登录到psql终端才能运行它.
我想知道是否有人知道从Linux shell命令行执行类似命令的方法,类似于Postgres允许shell命令如下
/opt/postgresql/bin/pg_dump dbname > /tmp/dbname.sql
Run Code Online (Sandbox Code Playgroud)
这允许从Linux shell转储数据库而无需登录到psql终端.
我在PostgreSQL 8.4上有两个服务器:
server1:5432
server2:5432
Run Code Online (Sandbox Code Playgroud)
现在我想从server1复制表并将其放在server2的数据库中.
它有可能做到吗?
UPDATE
我尝试在@Valery Viktorovsky的回答中做:
pg_dump --server1:5432 --encoding=utf8 --no-owner --username=postgres --123456 np_point > D:\np_point.sql
psql --server2:5432 --username=postgres mrsk -f D:\np_point.sql
Run Code Online (Sandbox Code Playgroud)
并得到错误:
ERROR: syntax error at or near "pg_dump"
LINE 1: pg_dump --server1:5432 --encoding=utf8 --no-owner --use...
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 python 脚本将 csv 文件从从 BigQuery 导出的 Google Cloud Storage (GCS) 迁移到 PostgreSQL Google Cloud sql 实例。
我希望使用 Google API,但在文档中发现了这一点:
PostgreSQL 实例不支持使用 Cloud SQL Admin API 导入 CSV 数据。
作为替代方案,我可以使用psycopg2库并将 csv 文件的行流式传输到 SQL 实例中。我可以通过三种方式做到这一点
我担心的是这些 csv 文件可能包含数百万行,并且为上述三个选项中的任何一个运行此过程对我来说似乎是一个坏主意。
我有哪些选择?本质上,我在 BigQuery 中有一些原始数据,我们在导出到 GCS 之前对其进行了一些预处理,以准备导入到 PostgreSQL 实例。我需要将此预处理数据从 BigQuery 导出到 PostgreSQL 实例。
这不是这个问题的重复,因为我最好寻找将数据从 BigQuery 导出到 PostgreSQL 实例的解决方案,无论是通过 GCS 还是直接。
首先,我想说,我不是数据库专家,也没有使用 heroku 服务的经验。
我想将播放框架应用程序部署到 heroku 服务。我需要一个数据库来这样做。所以我用这个命令创建了一个 postgresql 数据库,因为它受 heroku 支持:
Users-MacBook-Air:~ user$ heroku addons:create heroku-postgresql -a name_of_app
Run Code Online (Sandbox Code Playgroud)
我得到了这个作为回应
Creating heroku-postgresql on ? benchmarkingsoccerclubs... free
Database has been created and is available
! This database is empty. If upgrading, you can transfer
! data from another database with pg:copy
Run Code Online (Sandbox Code Playgroud)
所以数据库现在已经存在,但当然是空的。对于开发,我使用了本地 H2 数据库。
现在我想使用 sql 文件在 heroku 上填充数据库,因为它有很多数据。但我找不到如何做到这一点。是否有适用于 heroku CLI 的命令,我可以在其中将 sql 文件作为参数移交并填充数据库?文件基本上由几个创建的表和大约 10000 个插入命令组成。
编辑:我也有来自所有表的 CSV 文件。因此,如果有一种方法可以让我用这些填充 Postgres 数据库也很棒