为postgres创建mysqldump

时间:2014-02-03 18:26:54

标签: mysql postgresql

我正在创建一个要在postgresql中导入的mysql转储文件。我正在使用:

mysqldump -u username -p --compatible=postgresql databasename > outputfile.sql

现在,我遇到INSERT句子的问题,如果有一个布尔列,MySql转储将此值写入文件为0或1(true或false),但是当我导入转储时psql,这个程序要求boolean fields的值为“true”或“false”。

任何解决方案?

2 个答案:

答案 0 :(得分:2)

如果您的问题仅来自布尔值,您可以更改Postgresql(不是一个好的解决方案,而是一个临时补丁)。

update pg_cast set castcontext='a' where casttarget = 'boolean'::regtype;

完成后:

update pg_cast set castcontext='e' where casttarget = 'boolean'::regtype;

来源:https://dba.stackexchange.com/questions/46140/have-postgresql-accept-1-and-0-as-true-and-false-for-boolean

答案 1 :(得分:2)

user3182456的答案很棒。但是,如果您无法访问pg_cast,并且不介意更改MySQL数据库,则可以先将tinyint(1)列转换为char(1)。这将在转储中生成'0''1',而postgres将这些视为布尔值。

ALTER TABLE YourTable
MODIFY COLUMN YourTinyInt1Column CHAR(1);