`
jolestar
  • 浏览: 195282 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mysqldump导出数据到mssql

阅读更多
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语句。否则只输出一个insert,如:insert into table values(value1,value2,...),(value1,value2,...),...(value1,value2,..)。这种格式sqlserver不识别。

 

 

mysql中用\转义 字符串里的 单引号等字符,而sqlserver的字符串中两个单引号表示一个单引号。没找到mysqldump指定转义字符的选项。有个fields-escaped-by选项,但只有在输出文本格式的时候有用,输出sql语句的时候不能用。

 

所以只好用sed替换一下。

 

sed "s/\\\'/''/g"
 
分享到:
评论
1 楼 goodjin 2012-08-30  
如果是这个语句怎么办?
insert into t(id,name,sex) values(1,'abc\\',1);

相关推荐

Global site tag (gtag.js) - Google Analytics