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"