最近在做一个日志统计项目,有一个辅助表是在MySQL数据库的,现在要将其迁移到Postgresql,自然是先用mysqldump将MySQL里面的数据导出,然后再导入到Postgresql即可。但在实际操作过程中,发现一些字段中本身就含有单引号,在导出的sql语句中,对这样的单引号使用’\’做了转义处理,比如原来的某个字段的值为:It’s very popular,导出的sql中大概是这样的格式:’It\’s very popular’,可以看到,字段中的单引号被转义。但使用导出的sql往Postgresql中插入数据时,却报告错误,因为Postgresql对’\’作为转义字符并不识别。

Question:

I use mysqldump to backup my mysql database. The problem is that the sql file generated by mysqldump doesn’t escapes single quotes properly.

Here is an example of the mysqldump generated sql script :

INSERT INTO someTable VALUES (1,’This ain\’t escaped correctly’);

That single quote escaping in “ain’t” doesn’t work and it makes the rest of the script being inside that string. Is there a way around this?

Answer:

That output of mysqldump is working as designed, and it is properly escaped, unless you try to restore the dump on a MySQL instance with SQL_MODE=NO_BACKSLASH_ESCAPES set.

There’s an outstanding feature request to make mysqldump use a pair of single-quotes to escape literal single-quotes, as per ANSI SQL. See http://bugs.mysql.com/bug.php?id=65941

In the meantime you might be able to convert from backslash-singlequote to pair-of-singlequotes with a command line this:

mysqldump test | sed -e “s/\\’/”/g” > test-dump.sql

I tried that out briefly by creating a dummy table in my test database and inserting the string “O’Hare” into the table. But that’s hardly a comprehensive test – I take no responsibility for this suggestion working in all cases.

结合另外一篇博客,完整的导出命令应写成:

mysqldump -u root -ppassword –no-create-db –no-create-info

–complete-insert –compatible=mssql –default-character-set=utf8 –skip-opt –compact –extended-insert=false dbname tablename|sed “s/\\’/”/g”>tablename.sql

参数的含义如下:

–no-create-db 不输出建database的脚本

–no-create-info 不输出创建table的脚本

–complete-insert 完整的插入,输出每个字段(如: insert into table(field1,field2,….) values(value1,value2,…))

–compatible=mssql 教本兼容格式,这里是mssql 这样教本里就会把table的名字和字段名用“号引起来,而不是mssql不能识别的`号。

–default-character-set=utf8 默认编码

–compact 输出尽量少的信息

–extended-insert=false 禁用它,可以每行生成一句insert语句,否则只输出一个。

至此,问题解决。在Postgresql中,两个单引号表示一个单引号,因此在导出时使用sed命令直接将\’替换成”,就可以将数据正确插入到Postgresql中了。

MySQL导出数据反单引号_使用mysqldump导出数据时对字段中包含的单引号的处理相关推荐

  1. Postgresql:删除及查询字段中包含单引号的数据

    Postgresql:删除及查询字段中包含单引号的数据 1. 假设pg表t_info的属性att,值为固定的:'test' 2. 假设值为不固定的,'abcde' 参考 1. 假设pg表t_info的 ...

  2. mysql查询包含字符串的记录,MYSQL中利用select查询某字段中包含以逗号分隔的字符串的记录方法...

    首先我们建立一张带有逗号分隔的字符串. CREATE TABLE test(id int(6) NOT NULL AUTO_INCREMENT,PRIMARY KEY (id),pname VARCH ...

  3. 网络请求 get 请求时, 如果参数中的字符带有+号

    网络请求 get 请求时, 如果参数中的字符带有+号, 今天前端在调用我的API时, 发现有个参数一直没法通过我后台的验证, 但是在前端查看时, 该参数结构又没有什么异常, 又是一番查找, 直到在后端 ...

  4. 导出测试点的信号名_小程序导出数据到excel表,借助云开发云函数实现excel数据的保存...

    我们在做小程序开发的过程中,可能会有这样的需求,就是把我们云数据库里的数据批量导出到excel表里.如果直接在小程序里写是实现不了的,所以我们要借助小程序的云开发功能了.这里需要用到云函数,云存储和云 ...

  5. 数据科学还是计算机科学_您应该拥有数据科学博客的3个原因

    数据科学还是计算机科学 "Start a Blog to cement the things you learn. When you teach what you've learned in ...

  6. 数据可视化 信息可视化_更好的数据可视化的8个技巧

    数据可视化 信息可视化 Ggplot is R's premier data visualization package. Its popularity can likely be attribute ...

  7. 平台api对数据收集的影响_收集您的数据不是那么怪异的api

    平台api对数据收集的影响 A data analytics cycle starts with gathering and extraction. I hope my previous blog g ...

  8. python实时数据存储与显示_利用python进行数据加载和存储

    1.文本文件 (1)pd.read_csv加载分隔符为逗号的数据:pd.read_table从文件.URL.文件型对象中加载带分隔符的数据.默认为制表符.(加载为DataFrame结构) 参数name ...

  9. 数据增量更新定义_技术资讯 | TiDB在准实时数据仓库中的实践

    " OPPO大数据中心在2019年初承接了接入某业务线核心数据的重要任务:一期目标是建立一个能提供准实时大数据查询服务的数据仓库. 我们选用了之前从未在公司大规模正式使用过的TiDB作为核心 ...

最新文章

  1. Ubuntu下用gcc与nasm联合编译
  2. 计算机硬件系统设计mooc,计算机硬件系统设计MOOC答案
  3. 蒙特卡洛法求圆周率100亿数据
  4. 单变量线性回归模型_了解如何为单变量模型选择效果最好的线性回归
  5. JVM架构和GC垃圾回收机制详解
  6. c++ 圆上任意点坐标计算_线性代数总结 第三章 向量代数与几何计算(空间平面和直线)...
  7. 沥青防水卷材行业调研报告 - 市场现状分析与发展前景预测
  8. js与jquery对象的互转
  9. Macbook Pro休眠唤醒后后台运行程序被关闭的解决方法
  10. matlab伏安特性曲线的图,电源伏安特性曲线的意义详细解析
  11. springboot快速搭建ftpserver服务端
  12. 新手操作低客单价时常见的误区有哪些?
  13. 简单的HANGMAN游戏
  14. 绘画新手怎么学习绘画?怎么让自己的绘画作品看起来舒服?
  15. 批量转换灰度图并保存
  16. Python数据可视化第 9 讲:matplotlib极坐标图绘制函数polar
  17. notify()和notifyAll()有什么区别?
  18. 如何将.po 文件转换为 .mo 文件
  19. 《黄聪:手机移动站SEO优化教程》2、PC端和手机移动端SEO优化区别
  20. Spring学习第6篇: 基于注解使用IOC

热门文章

  1. [JS]在ACM模式下获取输入
  2. java 多线程 事件_java 多线程-线程不安全案例
  3. SCOI2009 最长距离
  4. C# 视频多人脸识别的实现过程
  5. 【java线程】锁机制:synchronized、Lock、Condition
  6. VueJs开发笔记—IDE选择和优化、框架特性、数据调用、路由选项及使用
  7. Swift 中 insetBy(dx: CGFloat, dy: CGFloat) - CGRect 用法详解
  8. 转:RemObjects SDK 简介
  9. MyEclipse中运行环境jre、编译级别、tomcat运行环境区别
  10. jQuery-1.9.1源码分析系列(四) 缓存系统