Dav*_*vis 18 mysql postgresql database-migration
试图将数据库从MySQL迁移到PostgreSQL.我阅读的所有文档都非常详细地介绍了如何迁移结构.我发现很少有关于迁移数据的文档.该模式有13个表(已成功迁移)和9 GB数据.
MySQL版本:5.1.x
PostgreSQL版本:8.4.x
我想使用R编程语言使用SQL select语句分析数据; PostgreSQL有PL/R,但MySQL什么都没有(据我所知).
创建数据库位置(/var没有足够的空间;也不喜欢在任何地方都有PostgreSQL版本号 - 升级会破坏脚本!):
sudo mkdir -p /home/postgres/mainsudo cp -Rp /var/lib/postgresql/8.4/main /home/postgressudo chown -R postgres.postgres /home/postgressudo chmod -R 700 /home/postgressudo usermod -d /home/postgres/ postgres一切都好到这里.接下来,使用以下安装说明重新启动服务器并配置数据库:
sudo apt-get install postgresql pgadmin3sudo /etc/init.d/postgresql-8.4 stopsudo vi /etc/postgresql/8.4/main/postgresql.confdata_directory到/home/postgres/mainsudo /etc/init.d/postgresql-8.4 startsudo -u postgres psql postgres\password postgressudo -u postgres createdb climatepgadmin3使用pgadmin3配置数据库和创建模式.
该剧集继续在一个名为的远程shell中bash运行,并且安装了一组具有相当不寻常的徽标的工具:SQL Fairy.
perl Makefile.PLsudo make installsudo apt-get install perl-doc(奇怪的是,它没有被调用perldoc)perldoc SQL::Translator::Manual提取PostgreSQL友好的DDL和所有MySQL数据:
sqlt -f DBI --dsn dbi:mysql:climate --db-user user --db-password password -t PostgreSQL > climate-pg-ddl.sqlclimate-pg-ddl.sql标识符并将其转换为小写,然后插入模式引用(使用VIM):
:%s/"\([A-Z_]*\)"/\L\1/g:%s/ TABLE / TABLE climate./g:%s/ on / on climate./gmysqldump --skip-add-locks --complete-insert --no-create-db --no-create-info --quick --result-file="climate-my.sql" --databases climate --skip-comments -u root -p简单地将MySQL中的表和列重命名为小写可能是值得的:
select concat( 'RENAME TABLE climate.', TABLE_NAME, ' to climate.', lower(TABLE_NAME), ';' ) from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA='climate';在PostgreSQL中重新创建结构如下:
pgadmin3 (切换到它)climate-pg-ddl.sqlTABLE "用TABLE climate."(插入模式名称climate)搜索替换on "用on climate."(插入模式名称climate)搜索替换F5执行这导致:
Query returned successfully with no result in 122 ms.
Run Code Online (Sandbox Code Playgroud)
此时我很难过.
climate-my.sql,以climate-pg.sql使他们能够对PostgreSQL的执行?为了达到这个目的,需要相当多的信息:
谢谢!
我通常为此类迁移做两件事:
然后进行转换,并用您最熟悉的任何语言编写一个程序来完成以下任务:
重新设计 PostgreSQL 的表以利用其功能。
如果您只是使用脚本sed将 SQL 转储从一种格式转换为另一种格式,那么您所做的就是将 MySQL 数据库放入 PostgreSQL 服务器中。您可以这样做,而且这样做仍然会有一些好处,但如果您要迁移,请完全迁移。
这将需要花费更多的前期时间,但我还没有遇到过不值得的情况。
| 归档时间: |
|
| 查看次数: |
6827 次 |
| 最近记录: |