windows平台,导出数据库
最近想把wordpress的数据导出,并存放到supabase的PostgreSQL中
遇到的问题:免费版supabse不支持ipv4地址连接数据库并导入数据,而我没有ipv6,所以只能逐个导出
导出数据库结构,不含数据
另外要手动删除.sql文件内刚开始的\restrict与尾部的\unrestrict所在行要删除
pg_dump -h localhost -p 5432 -U postgres -d wp1020 --schema-only --no-comments --encoding=UTF8 -n hghghg -f "public_schema.sql"
接着如下图,将刚才生成的sql文件代码粘贴进来,Run一下
如下图,新的表结构已创建好了
数据结构有了,下面就是插入数据了
如果需要插入的数据量很多,那么在网页版supabase执行sql的插入数据命令时,会报错,于是只能曲线救国,每次导出一个表的数据,然后插入到supabase中
导出某表的值并带头(不带结构)为cvs
将本地数据库wp1020下的schema为hghghg的wp_posts表导出为csv,包含表头行
psql "postgresql://postgres:11111@localhost:5432/wp1020" -c "SET client_encoding TO 'UTF8'; copy hghghg.wp_posts TO 'D:/wp_posts.csv' WITH (FORMAT csv, HEADER true, ENCODING 'UTF8');"
如果没有指定UTF-8,会有如下报错
错误: 编码"UTF8"的字符0x0xc2 0xa0在编码"GBK"没有相对应值
用如下2行将命令窗口设为utf-8也无效
chcp 65001
set PGCLIENTENCODING=UTF8
导出某表的值为sql文件(不带结构)(若有ipv6,可以试试)
pg_dump -h localhost -p 5432 -U postgres -d wp1020 -n hghghg -t wp_users --data-only --inserts -f wp_users_data.sql
细节:上述代码中有--inserts,有了这个参数,就会用sql的insert into...标准语句,不容易出现意外错误
sql语句依然可以在网页顶部的工具栏输入
删除 schema 的基本命令
DROP SCHEMA hghghg;
DROP SCHEMA my_schema;
⚠️ 如果这个 schema 里还有表、视图、函数等对象,这个命令会报错:
ERROR: cannot drop schema my_schema because other objects depend on it
💣 强制删除整个 schema(包含内部所有对象)
如果你确定要把 schema 里的所有内容一并删除:
DROP SCHEMA hghghg CASCADE;
这会删除:
schema
hghghg
本身;其中的所有表、视图、索引、序列、函数等。
附录
我的windows10本地数据库结构