我尝试了以下命令,它没有返回任何错误,但数据未导入我的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)
出了什么问题?
答案 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