求助MYSQL千万数据导入到sqlserver2005变成乱码,我用的是工具是dts通过odbc连接连转换的,sqlserver2005把dts改成说法是ssis给大家看一下我的mysql数据结构表
我只有真实用户名字的字段是中文的
CREATE TABLE oa(
  email  varchar(100) collate utf8_bin NOT NULL,
  realname varchar(100) collate utf8_bin NOT NULL,
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

解决方案 »

  1.   

    --1. 为数据库指定排序规则
    CREATE DATABASE db COLLATE Chinese_PRC_CI_AS
    GOALTER DATABASE db COLLATE Chinese_PRC_BIN
    GO
    /*====================================*/
    --2. 为表中的列指定排序规则
    CREATE TABLE tb(
    col1 varchar(10),
    col2 varchar(10) COLLATE Chinese_PRC_CI_AS)
    GOALTER TABLE tb ADD col3 varchar(10) COLLATE Chinese_PRC_BIN
    GOALTER TABLE tb ALTER COLUMN col2 varchar(10) COLLATE Chinese_PRC_BIN
    GO
    /*====================================*/
    --3. 为字符变量和参数应用排序规则
    DECLARE @a varchar(10),@b varchar(10)
    SELECT @a='a',@b='A'--使用排序规则 Chinese_PRC_CI_AS
    SELECT CASE WHEN @a COLLATE Chinese_PRC_CI_AS = @b THEN '@a=@b' ELSE '@a<>@b' END
    --结果:@a=@b--使用排序规则 Chinese_PRC_BIN
    SELECT CASE WHEN @a COLLATE Chinese_PRC_BIN = @b THEN '@a=@b' ELSE '@a<>@b' END
    --结果:@a<>@b
      

  2.   

    mysql中charset为utf-8你的sql2005中表中相应字段,如果是chinese_prc_****排序规则,应该是不会乱码的。
    或者把sql2005 中相应字段列类型改为nvarchar
      

  3.   

    此問題我也遇到過:
       從oracle數據庫表數據在導入sql2000數據庫表數據時,我用了sql link方法:
       select * from openquery(ora,'select * from bom_loc')數據顯示中文是亂碼的,我在自己的機子上測試,安裝了 oacle net manager再配置連接,居然不亂碼了,顯示一切正常;建議樓主修改字符集或按照我的方法試試,sql2008查詢也通過!
      

  4.   

    此問題我也遇到過:
       從oracle數據庫表數據在導入sql2000數據庫表數據時,我用了sql link方法:
       select * from openquery(ora,'select * from bom_loc')數據顯示中文是亂碼的,我在自己的機子上測試,安裝了 oacle net manager再配置連接,居然不亂碼了,顯示一切正常;建議樓主修改字符集或按照我的方法試試,sql2008查詢也通過!
      

  5.   

    mssql里字符串的栏位改成nvarchar
      

  6.   


    该成 --在最后面的 not null去掉,号CREATE TABLE oa( 
      email  varchar(100) collate utf8_bin NOT NULL, 
      realname varchar(100) collate utf8_bin NOT NULL
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin 
    [/Quote]
      

  7.   

    哈哈.我已经解决了,要散分给你们咯.解决方式是odbc版本问题.我以前用的是mysql-5.0.24-win32
    与odbc3.1版本的.现在改成ODBC5·1 这样转换就没有问题了.为什么是版本问题呢.因为我转换的时候
    用的dts,而dts正是通过odbc驱动来转换数据的.ok.谢谢各位的热情,让我们学到更多的知识