我正在创建一个要在postgresql中导入的mysql转储文件。我正在使用:
mysqldump -u username -p --compatible=postgresql databasename > outputfile.sql
现在,我遇到INSERT
句子的问题,如果有一个布尔列,MySql转储将此值写入文件为0或1(true或false),但是当我导入转储时psql,这个程序要求boolean fields的值为“true”或“false”。
任何解决方案?
答案 0 :(得分:2)
如果您的问题仅来自布尔值,您可以更改Postgresql(不是一个好的解决方案,而是一个临时补丁)。
update pg_cast set castcontext='a' where casttarget = 'boolean'::regtype;
完成后:
update pg_cast set castcontext='e' where casttarget = 'boolean'::regtype;
答案 1 :(得分:2)
user3182456的答案很棒。但是,如果您无法访问pg_cast
,并且不介意更改MySQL数据库,则可以先将tinyint(1)
列转换为char(1)
。这将在转储中生成'0'
和'1'
,而postgres将这些视为布尔值。
ALTER TABLE YourTable
MODIFY COLUMN YourTinyInt1Column CHAR(1);