求助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;
我只有真实用户名字的字段是中文的
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;
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
或者把sql2005 中相应字段列类型改为nvarchar
從oracle數據庫表數據在導入sql2000數據庫表數據時,我用了sql link方法:
select * from openquery(ora,'select * from bom_loc')數據顯示中文是亂碼的,我在自己的機子上測試,安裝了 oacle net manager再配置連接,居然不亂碼了,顯示一切正常;建議樓主修改字符集或按照我的方法試試,sql2008查詢也通過!
從oracle數據庫表數據在導入sql2000數據庫表數據時,我用了sql link方法:
select * from openquery(ora,'select * from bom_loc')數據顯示中文是亂碼的,我在自己的機子上測試,安裝了 oacle net manager再配置連接,居然不亂碼了,顯示一切正常;建議樓主修改字符集或按照我的方法試試,sql2008查詢也通過!
该成 --在最后面的 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]
与odbc3.1版本的.现在改成ODBC5·1 这样转换就没有问题了.为什么是版本问题呢.因为我转换的时候
用的dts,而dts正是通过odbc驱动来转换数据的.ok.谢谢各位的热情,让我们学到更多的知识