我正在尝试这样做:
mysql -u root old_db -e "SELECT some_fields FROM huge_table INTO OUTFILE ..." \
| cat header.sql - trailer.sql \
| psql new_db
其中 header.sql 包含:
COPY huge_table (some_fields) FROM stdin;
而 trailer.sql 只包含\.
终止流。
我一生都无法弄清楚如何让 MySQL 将制表符分隔的值转储到 STDOUT 中,以便该管道可以工作。我尝试将 /dev/stdout 指定为路径,但它声称没有权限。
我正在尝试这样做以尽快将数据从 MySQL 获取到 PostgreSQL。写入磁盘并返回 PostgreSQL 的时间太慢了。
我注意到,如果您将查询通过管道传输到MySQL,它几乎会输出一个 TSV,但不完全是。
有什么办法可以做到这一点,还是我在鞭打一匹死马?