解决txt导入sql server数据库乱码问题

解决txt导入数据库乱码问题

原则:上传的文本的编码跟上传服务器的编码要一致


一、查数据库服务器编码SQLserver:

SELECT  COLLATIONPROPERTY('Chinese_PRC_Stroke_CI_AI_KS_WS', 'CodePage') 


下面是查询结果: 
936 简体中文GBK 
950 繁体中文BIG5 
437 美国/加拿大英语 
932 日文 
949 韩文 
866 俄文 
65001 unicode UFT-8


二、查txt文件编码

文件编码下载一个记事本增强软件notepad2
用它来打开文本,在“文件”菜单中有子级菜单“编码”,可以非常方便地查看到文本编码类型,支持的编码类型有:
ANSI
Unicode
Unicode Big Endian
UTF-8


三、按编码要一致原则处理


把txt改成gbk编码:

[notepad2中:编码——重新编码]   【注意:有效性未知】


四、将txt文件右键另存为.csv文件——在sql server中先建表后导入


USE database;

GO

drop table post_data;
CREATE TABLE post_data (
   post_id int not null,
   post_title nvarchar(max) null, 
   post_content nvarchar(max) not null 
   ); 


BULK INSERT post_data FROM 'E:\mydata\post_data.csv'
   WITH (
      DATAFILETYPE = 'char',
      FIELDTERMINATOR = ',',--.csv文件默认的列分隔符是英文,
      ROWTERMINATOR = '\n'  --.csv文件默认的列分隔符是换行符
     -- KEEPNULLS
);
GO

select top 5 * from post_data order by post_id 
--发现有重复记录,数据清洗语句如下

select distinct * into #Tmp from post_data
drop table post_data
select * into post_data from #Tmp
drop table #Tmp

select  * from post_data order by post_id 


五、将txt文件右键另存为unicode编码——在sql server中先建表后导入

BULK INSERT post_data FROM 'E:\mydata\post_data.txt'

   WITH (
      DATAFILETYPE = 'widechar',
      FIELDTERMINATOR = '\t',
      ROWTERMINATOR = '\n'
);
GO


强调:

SQL Server 2008版本的bcp,bulk insert命令不支持UTF8文件.2005版支持. http://blog.csdn.net/xiaoxu0123/article/details/6215843



你可能感兴趣的:(大数据分析问答)