postgresql - 将大数据导出到 CSV 文件

标签 postgresql coldfusion coldfusion-9 postgresql-8.4

我当前的任务要求我从一个非常大的数据库中导出大约 100,000 行数据。

我对处理大数据还很陌生,我很想听听那些以前有经验处理这些问题的人的一些最佳实践和指南,这些问题对他们有用过去,努力使这篇文章非主观

更多细节:

  • 数据库根本没有规范化(非常难看)

  • 我总共至少要处理 100,000 行

  • 任务在用户较少的午夜运行

  • 目前使用 ColdFusion 9、PostgreSQL 8.4

谢谢!

这是应用 Craig 的解决方案后我的代码的样子:

<cfset base_path = GetDirectoryFromPath(ExpandPath("*.*")) & "some_parent\some_child\">

<cfif not DirectoryExists(base_path)>
    <cfdirectory directory="#base_path#" action="create" mode="777">
</cfif>

<cfset this_batch_path = DateFormat(Now(), 'mmddyyyy') & TimeFormat(Now(), 'hhmmss') & "\">
<cfdirectory directory="#base_path##this_batch_path#" action="create" mode="777">

<cfset this_filename = "someprefix_" & DateFormat(Now(), 'yyyymmdd') & ".csv">
<cffile action="write" file="#base_path##this_batch_path##this_filename#" output="">

<cfset escaped_copy_path = ListChangeDelims(base_path & this_batch_path & this_filename, "\\", "\")>

<cfquery name="qMyQuery" datasource="some_db" username="some_uname" password="some_pword" result="something">
    COPY some_table TO '#escaped_copy_path#' WITH CSV HEADER;
</cfquery>

现在我需要获取复制的行数。 在 PGSQL 8.4 文档中:

Outputs

On successful completion, a COPY command returns a command tag of the form

COPY count

The count is the number of rows copied.

但我似乎无法让它工作,即使使用结果标记和查询本身也是如此。

最佳答案

100,000 行并不大,除非这些行非常非常宽并且有很多大值。

只需使用 psql\copy (SELECT ...) TO '/some/local/file' WITH (FORMAT CSV, HEADER)

如果需要,您可以估算数据大小:

select pg_size_pretty(sum( octet_length(t::text) )) FROM mytable t WHERE ...;

对于实际的大数据提取运行,有时您可能希望使用 Talend Studio、Pentaho Kettle 或 CloverETL 等 ETL 工具。

顺便说一句,是时候开始考虑从 8.4 升级了,因为它现在已经停产了。

关于postgresql - 将大数据导出到 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29617754/

相关文章:

sql - 在 Postgres 中存储每个用户允许的网站

performance - 提高 SQL Server 2005 查询性能

coldfusion - Google Calendar OAuth access_token 不适用于 POST 功能

orm - 跨应用程序重用 ColdFusion ORM 实体/对象?

sql - Rails 3 ActiveRecord 和 Postgres : order by count on association

database - PostgreSQL -> 甲骨文复制

postgresql - 如何使用 PG_restore 备份/移动我的数据库?

javascript - 使函数在 onClick 和 onKeypress JQuery/Javascript 上可用?

css - cfpresentation 不保留 PowerPoint 中的 div 格式

使用 SerializeJSON 后 JSON 未正确输出