「postgres」导出数据以及分割数据

本文介绍如何使用psql的copy命令从PostgreSQL数据库中导出数据,并利用split命令将大文件按指定行数分割成多个小文件的方法。适用于需要处理大量数据并进行分批处理的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【需求】

导出数据,并按规定行数分割成小文件

【解决】

导出数据用copy命令(非root用\copy命令),分割数据用split命令即可

 

1、导出postgres中的数据,在psql命令行中通过copy导出数据:

使用psql登录,示例:psql -h IP地址 -U 用户名 -d 数据库名

\COPY (select ... LIMIT 100000000) TO '目标地址.csv' with csv;

表示导出select的输出到文件 目标地址.csv中,注意目标地址.csv的权限

2、分割成小数据:#split -l 5000000 目标地址.csv -d -a 3 phones_

表示分割 目标地址.csv 大文件,按500万行,并以phones_开头,顺序拼接3个数字,比如phones_001

#ls |xargs -i -t mv ./{}  ./{}.csv

表示批量增加.csv后缀名

转载于:https://www.cnblogs.com/ftrako/p/9836304.html

### MySQL 数据迁移的方法与工具 #### 方法一:使用 `mysqldump` 工具 `mysqldump` 是 MySQL 官方提供的一种数据备份和迁移工具。它可以将数据库的内容导出为 SQL 脚本文件,从而方便地迁移到其他数据库实例中。然而,由于其单线程特性,在处理大规模数据时效率较低[^3]。 ```bash mysqldump -u username -p --databases db_name > dump.sql ``` 上述命令可以用来导出指定数据库的全部内容到一个 `.sql` 文件中。需要注意的是,这种方法不适合涉及分库分表场景下的复杂迁移需求[^3]。 #### 方法二:借助第三方工具 `mydumper` 为了克服 `mysqldump` 单线程操作带来的性能瓶颈,社区推出了多线程替代方案——`mydumper`。相比前者,它能够显著提高大数据量情况下的导出速度,但仍不具备跨架构字段映射能力以及分布式存储的支持[^3]。 安装并执行如下命令即可完成快速转储: ```bash mydumper -u root -p password -B database_name -o /path/to/output/ ``` 此方式特别适合那些追求高效传输但又不需要额外逻辑变换的任务环境。 #### 方法三:物理迁移策略 当面对超大型静态数据集时,“物理迁移”成为一种可行的选择。这种方式通常涉及到直接拷贝底层磁盘镜像或者是利用专门设计的应用程序比如 Navicat 来辅助实施整个流程。不过值得注意的是,源目标两端必须具备相同版本号及相关设置参数才能顺利完成切换过程[^2]。 对于某些特定条件下(如同构硬件平台间),这种技术手段无疑是最简单直接的办法之一;但对于异质化部署则显得较为局限。 #### 方法四:CSV 导入/导出机制 另一种常见做法就是把表格里的每一列都转化为逗号分割的形式保存成纯文本档案再上传至新位置重新构建关联关系。尽管如此操作相对繁琐耗时较长,可一旦成功后却能带来惊人的吞吐率提升效果 —— 据统计每小时可达八千多万笔记录[^4]! 以下是具体实现步骤概览: 1. 创建 CSV 文件; 2. 使用 LOAD DATA INFILE 命令加载这些外部资源回到新的系统里去。 示例代码片段展示如何创建这样的平面文件形式: ```sql SELECT * INTO OUTFILE '/tmp/result.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM table; ``` 随后可通过下面这段语句迅速恢复原貌: ```sql LOAD DATA LOCAL INFILE '/tmp/result.csv' INTO TABLE new_table FIELDS TERMINATED BY ','; ``` #### 方法五:专用转换软件 mysql2postgresql 如果计划从 MySQL 平滑过渡到 PostgreSQL,则推荐考虑采用定制化的解决方案如 **mysql2pgsql** 。这类应用不仅简化了繁杂的手动调整工作量,而且还能自动适配两者之间的语法差异等问题[^1]。 例如,要启动一次完整的转移作业只需按照官方指引准备好初始条件之后运行单一指令即刻生效: ```bash ./mysql2postgres -s source_db_config.yml -t target_db_config.yml ``` --- ### 问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值