pgloader не импортирует данные из MySQL в Postgres

Я попробовал следующую команду, и она не возвращает ошибок, но данные не импортируются в мою базу данных 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)

Что не так?

1 ответ

Решение

Я предполагаю, что из-за различий в терминологии (схема mysql - это то, что postgres использует в качестве базы данных), ваши таблицы загружены в схему mydb, а не в public. список с префиксом в имени таблицы дал эту идею. поэтому, чтобы найти загруженные данные - укажите имя схемы перед именем таблицы, например

select count(*) from mydb.schema_migrations

должен вернуть 17 строк - импортировано с pgloader

Вы также можете использовать файл загрузки, чтобы сделать таблицы общедоступными после импорта.

Добавьте это в файл (например, 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

проверьте здесь, чтобы узнать больше

Другие вопросы по тегам