`

从postgresql中 导数据到 mysql

 
阅读更多

从postgres中导出数据到csv中

1  用postgres用户(root)登录postgresql

2 建一个csv文件,并 chmod 777


3 在原数据中修改----title中的;改成:(有;的标题在导出到csv中时会被拆分成两列)
update article_article set title =  'China’s Copycats: Online vs. Offline.' where id=7939;
update article_article set title =  'Web browsers used most in China: how this impacts online campaigns.' where id=7804;
update article_article set title =  'Web browsers used most in China: how this impacts online campaigns.' where id=7926;
update article_article set title =  'Douban.com: China’s Amazon/Digg Hybrid Social Media Network.' where id=7973;
update article_article set title ='“China average daily salary is RMB 111.99???”: Chinese netizens challenge government statistics. ' where id=8029;
update article_article set title =  'China Telecom: Becoming the telephone version of Google.' where id=8072;
update article_article set title =  'The Rich Tighten Pockets: Online Shopping is New Obsession' where id=8169;
update article_article set title =  'The Good, The Bad And The Foreigner: Learning To Accept Myself Through The Eyes Of Others.' where id=7541;
update article_article set title =  'Johnson & Johnson: Big girls don’t cry… or let their bones break.' where id=8066;
select * from article_article where title like '%;%';

4----超级用户postgres,  登录
运行sql
COPY (SELECT * FROM article_article limit 50) TO '/home/david/myfile.csv' WITH CSV HEADER;
5--把导出的csv文件的第一行(culomn名删了)
csv导入mysql
1----mysql 是从 /var/lib/mysql/blog (blog是数据库名)这个目录下读文件的,所以把csv放到此目录下
然后在mysql运行sql命令:
load data infile 'myfile.csv'
into table blog.article
fields terminated by ',' optionally enclosed by '"' escaped by '"'
lines terminated by '\n';

***问题
postgres中boolean是用true和false表示 (在csv中是t和f)
但mysql中是用1和0(tinyint)表示,直接导入的话在mysql中都是显示0
把t和f改成1和0
2----导入后用py脚本update布尔值

#encoding:utf-8
import psycopg2
import MySQLdb

psycopg2_conn = psycopg2.connect(
        #database="expat", 
        database="postgres", 
        user="david", 
        password="1", 
        host="localhost", 
        port="5432"
    )

mysql_conn= MySQLdb.connect(
        host='localhost',
        port = 3306,
        user='root',
        passwd='1',
        db ='blog',
    )


def import_mysql_boolean():
    '''
    postgres中boolean是用true和false表示 (在csv中是t和f)
    但mysql中是用1和0(tinyint)表示,直接导入的话在mysql中都是显示0
    直接改csv把t和f改成1和0导致导入mysql的某些数据column对不上

    先把原数据导入mysql,再通过这个函数update布尔值
    '''
    cur = psycopg2_conn.cursor()
    cur.execute('''
        select id,is_approved, is_special, is_welcome, is_shf_featured,
            is_shf_sponsored, is_homepage_sponsored, is_home_featured
        from article_article 
        --where id in (8029 ,10691,  10099, 8810, 8936, 8939 , 10126 ,10128 ,10222 ,9217 ,9178,7898,7899)
        --limit 1000
        ''')
    rows = cur.fetchall() 
    #print rows

    cur.close()
    psycopg2_conn.commit()
    psycopg2_conn.close()

    cur2 = mysql_conn.cursor()

    for row in rows:
        arow = list()
        arow.append(row[0])
        arow.append(1) if row[1] is True else arow.append(0) # is_approved
        arow.append(1) if row[2] is True else arow.append(0) # is_special
        arow.append(1) if row[3] is True else arow.append(0) # is_welcome
        arow.append(1) if row[4] is True else arow.append(0) # is_shf_featured
        arow.append(1) if row[5] is True else arow.append(0) # is_shf_sponsored
        arow.append(1) if row[6] is True else arow.append(0) # is_homepage_sponsored
        arow.append(1) if row[7] is True else arow.append(0) # is_home_featured
        sql = '''
        update article set 
            is_approved={is_approved}, 
            is_special={is_special}, 
            is_welcome={is_welcome}, 
            is_shf_featured={is_shf_featured}, 
            is_shf_sponsored={is_shf_sponsored}, 
            is_homepage_sponsored={is_homepage_sponsored}, 
            is_home_featured={is_home_featured}
        where id = {id}
        '''.format(id=arow[0],
                   is_approved=arow[1],
                   is_special=arow[2],
                   is_welcome=arow[3],
                   is_shf_featured=arow[4],
                   is_shf_sponsored=arow[5],
                   is_homepage_sponsored=arow[6],
                   is_home_featured=arow[7],

            )

        print sql
        cur2.execute(sql) 
    cur2.close()
    mysql_conn.commit()
    mysql_conn.close()

 


有一种情况就是表的某个字段大于csv文件的单元格的限制,这时如果编辑保存csv文件后,实际上这个过大的单元格会被拆分成两个单元格,再导入mysql中也就是表中的两个字段,这会导致表字段不对齐,碰到这种问题就是别去编辑csv文件,先把从postgresql导出的csv直接导入mysql,之后在mysql中用sql修改就不会出错

 

 

还有一种需要转义的情况 比如  要在表格中插入 ‘App\Article’ ,在python中写成 'App\\\Article', 它会被python转义一次,在插入mysql时又会被转一次,最终在mysql的表中就会表示成 ‘App\Article’ 

分享到:
评论

相关推荐

    导出数据字典工具 支持mysql,sqlserver,postgresql

    导出数据字典工具 支持mysql,sqlserver,postgresql

    SqlServer ,postgresql-8.3-603, mysql,oracle以及将数据导入到excel 的相关jar包

    本文将详细介绍如何使用SQL Server、PostgreSQL 8.3-603、MySQL、Oracle这四种主流的关系型数据库管理系统(RDBMS)进行数据操作,并探讨如何将这些数据库中的数据导入Excel进行分析和处理。涉及到的关键点包括...

    PyPI 官网下载 | mysql2postgresql-0.3.0.tar.gz

    在本例中,`mysql2postgresql`库提供了一个方便的解决方案,帮助用户将存储在MySQL中的数据转换并导入到PostgreSQL数据库中。这通常涉及到数据格式的转换、表结构的映射以及可能的兼容性问题处理。 **使用mysql2...

    让数据从PostgreSQL流动到Greenplum.pdf

    该文件标题为《让数据从PostgreSQL流动到Greenplum.pdf》,描述中提到安全分析、解决方案、移动安全、信息安全研究和web安全。文件内容围绕如何将数据从PostgreSQL数据库安全且高效地迁移到Greenplum数据库,并涵盖...

    PowerDesigner导出的SQL带列注释,导入到MySQL中列注释不见了的处理方法

    PowerDesigner 导出的 SQL 带列注释,导入到 MySQL 中列注释不见了的处理方法 在使用 PowerDesigner 导出 SQL 文件时,如果包含列注释,可能会在导入到 MySQL 数据库中时丢失。这是因为 PowerDesigner 导出的 SQL ...

    mysql数据维护

    - 在左侧的对象树中找到您想要导出数据的目标数据库。 2. **选择需要导出数据的表**: - 双击目标数据库或右键点击后选择“打开数据库”,以查看其中的表。 - 找到并选中您想要导出数据的表(例如:`user_`)。 ...

    基于nifi将mysql数据导入clickhouse

    基于nifi将mysql数据导入clickhouse。 给出了基于http与JDBC两种方式

    Mysql、Oracle、PostgreSQL、Sqlserver等数据库操作工具Navicat_Premium_15.0.8.zip mac版本

    1. **多数据库连接**:用户可以同时连接到多个不同类型的数据库,如MySQL、Oracle、PostgreSQL和SQL Server等,便于在不同数据库间进行数据对比、同步和迁移。 2. **数据可视化**:Navicat提供了直观的图表和报告...

    sqoop 从 hive 导到mysql遇到的问题.docx

    Sqoop 的核心概念是将数据从一个数据源(如 MySQL)传输到另一个数据源(如 Hive),或者从 Hive 导出数据到 MySQL 等关系数据库管理系统。Sqoop 使用 JDBC 连接器来连接不同类型的数据库,实现数据的传输和映射。 ...

    将MySQL或PostgreSQL的库表导出产生WORD文档

    在MySQL和PostgreSQL中,数据库(库)是由多个表组成的,而表则是由列(字段)和行(记录)构成的数据结构。每个表都有自己的结构,包括列名、数据类型、约束条件等,这些信息构成了表的定义。 导出库表结构到Word...

    Oracle至PostgreSQL数据库迁移方案.pptx

    它连接Oracle数据库,自动扫描并提取其结构或数据,然后生成可以加载到PostgreSQL数据库中的SQL脚本。 二、Ora2PG功能 Ora2PG可以支持大多数SQL的转换,但某些情况下仍需要人工校正语法,使其兼容PostgreSQL。其...

    a5m2数据库客户端(Postgresql,MySQL,Oracle等等主流数据库)

    用户可以直接将表中的数据复制粘贴到Excel中进行处理,或者从Excel粘贴数据回到数据库表,极大地提高了数据导入导出的效率。 3. **数据差异比较**:A5M2提供了一项实用的功能,即首次执行和再次执行的数据差异比较...

    mac os sierra 下 postgresql mysql 数据库 GUI 图形化 客户端

    2. **实时查看数据**:用户可以直接在表格视图中查看和编辑数据,更新会立即反映到数据库中。 3. **强大的SQL编辑器**:提供语法高亮、自动补全、查询历史记录等功能,提升编写SQL的效率。 4. **安全连接**:支持SSL...

    C#连接数据库MYSQL和POSTGRESQL.pdf

    本文将详细介绍如何使用C#连接到MySQL和PostgreSQL数据库。 ### C#连接MySQL MySQL是一种广泛使用的开源关系型数据库管理系统,由Oracle公司维护。在C#中连接MySQL,你需要使用`MySql.Data.MySqlClient`库。首先...

    将Django使用的数据库从MySQL迁移到PostgreSQL的教程

    接下来,从MySQL数据库中导出所有数据到JSON格式的文件: ```bash python manage.py dumpdata --all --natural --indent=4 > dbname.json ``` 如果你想只导出特定应用的数据,可以使用`--exclude`参数来排除不需要...

    藏经阁-PostgreSQL Greemplum 数据上云.pdf

    3. pgsql2pgsql和mysql2pgsql:这两个工具分别用于实现数据从PostgreSQL和MySQL到Greemplum的迁移。它们支持不落地迁移,即直接在源数据库和目标数据库之间传输数据,无需将数据先下载到本地服务器再上传,大大节省...

    mysql2postgres.zip

    MySQL到PostgreSQL的数据迁移工具——mysql2postgres 在数据库管理领域,经常遇到需要将数据从一个数据库系统迁移到另一个的情况。比如,从MySQL迁移到PostgreSQL。这时,`mysql2postgres`工具就能派上用场。它是一...

    数据库转成数据字典工具类,能完美的从数据库导出数据字典。

    本资源提供的“数据库转成数据字典工具类”旨在帮助IT专业人士高效地从现有的数据库中生成详细的数据字典,以满足项目管理和汇报需求。 首先,我们需要理解什么是数据字典。数据字典是系统设计阶段的产物,它包含了...

    数据库管理工具 支持MYSQL MSSQL PostgreSQL SQLIte ETCD

    在实际工作中,数据库管理工具通常提供图形用户界面(GUI)以简化数据库操作,如数据导入导出、查询构建、表设计等,使得数据库管理员和开发人员能够更高效地工作。例如,像Navicat这样的工具就提供了跨平台的数据库...

    mysql迁移postgres之navicat篇

    在实际工作中,我们经常需要将 MySQL 数据库迁移到 PostgreSQL,以满足不同的业务需求或技术架构。这篇文章将详细介绍如何使用 Navicat 客户端工具将 MySQL 数据库迁移到 PostgreSQL。 为什么要迁移 MySQL 到 ...

Global site tag (gtag.js) - Google Analytics