如何编写从CSV文件导入数据并填充表的存储过程?
我正在尝试通过命令行将带有标题的PostgreSQL表导出到CSV文件,但是我将其导出到CSV文件但没有标题.我也需要那些标题.我的代码如下所示
COPY products_273 to '/tmp/products_199.csv' delimiters',';
Run Code Online (Sandbox Code Playgroud) 我一直在使用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的PL/pgSQL输出保存到CSV文件 "的答案中的后续问题.
我需要使用psql的\copy命令编写客户端CSV文件.一个班轮工作:
db=> \copy (select 1 AS foo) to 'bar.csv' csv header
COPY 1
Run Code Online (Sandbox Code Playgroud)
但是,我有很长的查询,跨越几行.我不需要显示查询,因为我似乎无法在没有解析错误的情况下延伸过去一行:
db=> \copy (
\copy: parse error at end of line
db=> \copy ( \\
\copy: parse error at end of line
db=> \copy ("
\copy: parse error at end of line
db=> \copy "(
\copy: parse error at end of line
db=> \copy \\
\copy: parse error at end of line
Run Code Online (Sandbox Code Playgroud)
是否可以使用\copy跨越多行的查询?我在Windows上使用psql.
我在将PostgreSQL输出从shell导出到csv文件时遇到问题.
我的SQL脚本被调用script.sql.
我在shell中输入以下命令:
psql congress -af script.sql &> filename.csv
Run Code Online (Sandbox Code Playgroud)
但是当我打开filename.csv文件时,Excel csv中的所有列的值都会被挤压到一列中(请参阅附带的屏幕截图).
然后我尝试了另一种方式.我编辑我script.sql的是:
Copy (Select * From ...) To '/tmp/filename.csv' With CSV;
Run Code Online (Sandbox Code Playgroud)
然后我在数据库中的shell中键入以下命令dbname.
\i script.sql
Run Code Online (Sandbox Code Playgroud)
输出是:
COPY 162
Run Code Online (Sandbox Code Playgroud)
好吧,我的输出查询有162行.
所以我的输出表的162行已经复制到shell中.如何将它们粘贴或移动到csv文件?
或者,如果我要使用filename.csv(附带截图),我该如何修复该csv/Excel文件的格式?

我试图看看我的heroku实例上的数据.我希望能够在他们的服务器上查看数据库..
我不想把它拉到我的本地系统..更重要的是我不想等那么久,看看数据.
让我们假设我将当前数据库中的800万本书(以及所有相关的元数据)推送到heroku.然后在两个月内我又增加了1200万.(我仍处于开发模式)如果我对一批数据有问题,我认为下拉整个数据库是不可行的.
我想在等待下载数据时我可以做仰卧起坐.我听说这是旧程序员在编译时所做的事情.
我在postgresql中使用driving_distance来查找所有节点之间的距离,这是我在pyscripter中的python脚本,
import sys
#set up psycopg2 environment
import psycopg2
#driving_distance module
query = """
select *
from driving_distance ($$
select
gid as id,
start_id::int4 as source,
end_id::int4 as target,
shape_leng::double precision as cost
from network
$$, %s, %s, %s, %s
)
;"""
#make connection between python and postgresql
conn = psycopg2.connect("dbname = 'routing_template' user = 'postgres' host = 'localhost' password = '****'")
cur = conn.cursor()
#count rows in the table
cur.execute("select count(*) from network")
result = cur.fetchone()
k …Run Code Online (Sandbox Code Playgroud) 我正在通过Amazon Redshift编写psql,现在试图在SQL WorkBench上通过PSQL查询将输出保存为CSV。我计划通过查询而不是使用select子句来执行此操作,然后右键单击以将输出另存为csv,因为存在大量数据,所以我发现如果将输出生成到临时表中,则比使用select显示所有输出要快得多。因此,我在考虑是否也可以更快地保存到本地CSV。
我在这里尝试过最佳解决方案,但是,它在Amazon Redshift上不起作用,当我使用Copy (SELECT col1, col2 FROM my_table) TO '[my local csv path]' WITH CSV DELIMITER ',';或尝试使用时\Copy,它一直向我显示
Amazon无效操作:“(”或附近的语法错误
要么
Amazon无效操作:“ \”或附近的语法错误
然后,我检查了Amazon Redshift查询教程,没有找到任何可以将输出保存到本地CSV的子句。似乎COPY是将数据从Amazon数据源复制到Redshift,UNLOAD是将数据保存到s3,但我只想将数据保存在本地计算机上。
因此,有什么方法可以通过PSQL将Redshift输出保存到我的本地CSV上 ,但是可以在SQL WorkBench上?
我使用了 MS SQL Server 2008 R2 (MS SQL),我可以在其中右键单击查询结果,将其与标题一起复制/粘贴到 Excel 以便于探索。现在使用 PG Admin (PostgreSQL) 我必须做导出(文件 > 导出 > CSV)然后一堆 Excel 步骤(文本到列)。
有没有一种简单的方法可以将带有标题的查询结果复制/粘贴到 Excel 中?
谢谢!
我使用(全部)发布在此处的指令从postgresql数据库导出一些数据:将PostgreSQL的PL/pgSQL输出保存到CSV文件
但是一些导出的字段包含换行符(换行符),所以我得到了一个CSV文件,如:
header1;header2;header3
foobar;some value;other value
just another value;f*** value;value with
newline
nextvalue;nextvalue2;nextvalue3
Run Code Online (Sandbox Code Playgroud)
我如何逃避(或忽略)theese换行符?
postgresql ×9
csv ×4
psql ×2
shell ×2
client-side ×1
copy-paste ×1
database ×1
excel ×1
export ×1
heading ×1
heroku ×1
import ×1
linux ×1
psycopg2 ×1
python-2.7 ×1