pgloader没有将数据从MySQL导入Postgres

时间:2017-10-10 07:45:03

标签: mysql sql postgresql database-migration pgloader

我尝试了以下命令,它没有返回任何错误,但数据未导入我的postgres数据库。

数据库已在Postgres中创建。

pgloader mysql://user:password@localhost/mydb postgresql://user:password@localhost/mydb

结果如下:

                                        table name       read   imported     errors      total time
-------------------------------------------------  ---------  ---------  ---------  --------------
                                  fetch meta data         38         38          0          1.032s 
                                   Create Schemas          0          0          0          0.253s 
                                 Create SQL Types          0          0          0          0.008s 
                                    Create tables         20         20          0          0.417s 
                                   Set Table OIDs         10         10          0          0.020s 
-------------------------------------------------  ---------  ---------  ---------  --------------
                        mydb.active_admin_comments          0          0          0          0.007s 
                         mydb.ar_internal_metadata          1          1          0          0.139s 
                                  mydb.departments          2          2          0          0.090s 
                                        mydb.roles          2          2          0          0.174s 
                                   mydb.sentiments          3          3          0          0.223s 
                                mydb.twitter_users          6          6          0          0.276s 
                                 mydb.designations          3          3          0          0.087s 
                            mydb.schema_migrations         17         17          0          0.085s 
                                       mydb.tweets         47         47          0          0.238s 
                                        mydb.users          2          2          0          0.184s 
-------------------------------------------------  ---------  ---------  ---------  --------------
                          COPY Threads Completion          4          4          0          0.333s 
                                   Create Indexes         22         22          0          2.770s 
                           Index Build Completion         22         22          0          0.626s 
                                  Reset Sequences          8          8          0          0.208s 
                                     Primary Keys         10         10          0          0.069s 
                              Create Foreign Keys          6          6          0          0.053s 
                                  Create Triggers          0          0          0          0.000s 
                                 Install Comments          0          0          0          0.000s 
-------------------------------------------------  ---------  ---------  ---------  --------------
                                Total import time         83         83          0          4.051s 

当我登录psql查找数据时,它不在那里。例如,对于表用户,2个记录应该由pgloader如上所述导入,但结果如下:

user1=> \c mydb postgres
Password for user postgres: 
psql (10.0, server 9.6.5)
You are now connected to database "mydb" as user "postgres".
mydb=# SELECT count(*) FROM users;

 count 
-------
     0
(1 row)

mydb=# \dn
            List of schemas
            Name             |  Owner   
-----------------------------+----------
 public                      | postgres
 mydb                        | postgres
(2 rows)

出了什么问题?

2 个答案:

答案 0 :(得分:1)

我假设由于术语的不同(mysql架构是postgres作为数据库所使用的),你将表加载到mydb架构,而不是公共。表名中带有“prefix”的列表给出了这个想法。所以为了找到你的数据加载 - 在表名之前指定模式名称,例如

select count(*) from mydb.schema_migrations

应返回17行 - 使用pgloader

导入

答案 1 :(得分:0)

导入后,您还可以使用加载文件将表公开。

将此添加到文件(例如load_file.load):

LOAD DATABASE
   FROM mysql://root:mysql@localhost/from_db_name 
   INTO postgresql://localhost/to_db_name
ALTER schema 'to_db_name' rename to 'public';

然后运行:

$ pgloader load_file.load

check here for more