PostgreSQL:将查询结果保存到文件并获取保存的行数,windows/odbc

标签 postgresql

我正在尝试将查询结果自动保存到文本文件,而不是使用 ODBC 窗口连接在 VB.NET 中循环读取器对象。 但我找不到方法!

这就是我目前的尝试:

mCmd = New OdbcCommand( _
"SELECT my_id FROM " & myTable & " WHERE myflag='1' \o 'c:/a_result.txt'", mCon)
n = mCmd.ExecuteNonQuery

但这根本行不通。 请建议或代码示例如何获取它。

第二...
理想情况下,通过将结果保存到文本,我可以在变量“n”中获得许多保存的行。 至于现在我只得到 0 或 1 取决于查询是否成功。

编辑:
经过一番斗争后,我找到了一种或多或少成功的方法。
到txt文件:

mCmd = New OdbcCommand( _
"COPY (SELECT my_id FROM " & myTable & " WHERE myFlag='1' " & _
"ORDER BY my_id) TO 'c:/a_result.txt' DELIMITER AS '|'", mCon)

到csv文件:

mCmd = New OdbcCommand( _
"COPY (SELECT my_id FROM " & myTable & " WHERE myFlag='1' " & _
"ORDER BY my_id) TO 'c:/a_result.csv' WITH CSV", mCon)

这行得通,但我无法转义引号和“\”,所以我在输出文件中得到了双重符号。
如果有经验的人知道如何实现 csv 文件的转义和更改分隔符,我会很高兴在给定的示例中看到它。

查询后的变量“n”包含许多导出的行。

最佳答案

\o 序列是一个 psql元命令。这意味着它是 psql 的一个特性。如果您想要此功能,则必须在您的客户端中实现它。不过这很容易。

关于PostgreSQL:将查询结果保存到文件并获取保存的行数,windows/odbc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14010974/

相关文章:

java - hibernate 状态下的 Postgresql 'select distinct on'

php - 如何在sql中将两列连接成一个新列?

php - 从 PostgreSQL 获取 boolean 值

sql - 将一个表的行连同一个单独的值插入到postgresql中的另一个表中

sql - 表仅引用 2 个其他表的原因?

java - 使用 jOOQ 的任意运算符

sql - 通过缝合列来连接表格,无需制作笛卡尔积

postgresql - 从 Kubernetes 访问外部数据库

mysql - PostgreSQL (Heroku) 中的时间/日期时间比较

Javax 持久性在生产级别将 IDENTITY 更改为 SEQUENCE