将Postgresql表转换为Mysql表

将Postgresql表转换为Mysql表,mysql,postgresql,Mysql,Postgresql,我有一个表polit_活动,模式如下: CREATE TABLE polit_activity ( id serial NOT NULL, category_name character varying, soi character varying, heading character varying, description character varying, event_loc character varying, relloc character varying, new

我有一个表polit_活动,模式如下:

CREATE TABLE polit_activity
(
 id serial NOT NULL,
 category_name character varying,
 soi character varying,
 heading character varying,
 description character varying,
 event_loc character varying,
 relloc character varying,
 news_date timestamp with time zone,
 sectors character varying,
 results character varying,
 remarks character varying,
 recovery character varying,
 oth_pers character varying,
 mil_units character varying,
 mil_ops_cdr character varying,
 gp_org_cdr character varying,
 gr character varying
)
WITH (
 OIDS=FALSE
);
现在我想在Mysql数据库中使用相同的表和相同的数据。我试过命令:

psql> \o /var/lib/abc.csv
psql> select * from polit_activity;
我无法在Mysql中加载该文件。请帮我找到一个最简单的方法

请检查附加的csv文件

谢谢并致以最良好的问候,
Adarsh Sharma

至少,您需要编辑从PostgreSQL提取的SQL文件。PostgreSQL和MySQL有许多共同的特性,但使用这些特性的方式不同

例如,PostgreSQL和MySQL都支持自动递增的id号,但它们使用不同的保留字和技术来实现这些id号。PostgreSQL在该过程中使用保留字“SERIAL”作为DDL的一部分;MySQL没有

如果PostgreSQL文件使用MySQL的任何保留字作为表名或列名,则需要使用反勾号来保护它。Backticks在PostgreSQL中不合法

如果我只有一张桌子要处理,我可能会

  • 重写DDL以符合MySQL的 要求,
  • 将数据(而不是架构)转储到 使用pg_转储的磁盘
  • 并将数据读入新的MySQL 桌子

问题究竟是什么,您是如何尝试的?有错误信息吗?您能在MySQL中创建一个完全相同的表吗?Urk-您不能像SQL标准那样使用“双引号”来保护保留字吗?或者MySQL只支持反勾号?顺便说一下,对于单表转换,通常更容易使用
将tablename复制到/some/server/path
或客户端psql变体
\COPY tablename to/home/local/path
。可选的
WITH CSV
子句为您提供了对输出的大量控制,许多工具允许您将制表符/逗号分隔的数据加载到MySQL表中。从内存上看,它通常比争论
pg_dump--data only--insert--table tablename dbname
output更容易、更快,让MySQL开心。@CraigRinger:只有在更改服务器模式的情况下,才可以使用双引号来保护MySQL中的保留字。我不知道MySQL的转储是否符合服务器模式。