将Postgresql表转换为Mysql表
我有一个表polit_活动,模式如下:将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
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 桌子
将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的转储是否符合服务器模式。