【问题标题】:Can pgloader exclude specific columns in a MySQL table?pgloader 可以排除 MySQL 表中的特定列吗?
【发布时间】:2017-08-15 18:10:00
【问题描述】:

我正在使用带有 pgloader 的加载文件,并且我的 MySQL 数据库中有一个特别有问题的表,其日期时间格式错误。我想在迁移期间跳过该列。如何在加载文件中执行此操作?比如:

LOAD DATABASE 
    FROM mysql://root@localhost/mydb 
    INTO postgresql:///mypgdb
    INCLUDING ONLY TABLE NAMES MATCHING 
    'Table_with_Datetimes_Column' AS dt,
    'My_Other_Table'
    EXCLUDING dt.Malformed_Column
;

【问题讨论】:

    标签: mysql postgresql pgloader


    【解决方案1】:

    您可以完全排除有问题的表,然后使用加载命令的 MATERIALIZING VIEW 子句从视图迁移数据。因此,首先在表格顶部定义一个视图,在其中省略有问题的列,然后

    exclude table name matching 'Table_with_Datetimes_Column'
    materialize views 'v_Table_without_Datetimes_Column'
    

    查看 pgloader 存储库中测试目录中的示例,特别是 sakila.load 之一:https://github.com/dimitri/pgloader/blob/master/test/sakila.load

    【讨论】:

    • 这与我目前正在做的非常相似。我没有创建物化视图,而是删除列并正常加载表。您的方法更好,因为它保留了原始数据库,并且可以全部放入加载文件中。我今天试试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    • 2020-02-08
    • 2011-10-07
    • 1970-01-01
    相关资源
    最近更新 更多