BULK INSERT 不支持 UTF-8 编码的文件???

blackfire1024 2009-06-19 11:17:14

BULK INSERT [table1]
FROM 'd:\1.txt'
WITH
(
FORMATFILE='d:\format.xml'
)


执行后,错误提示

第 1 行、第 1 列(id)出现大容量加载数据转换错误(类型不匹配或者字符对于指定的代码页无效)

(第1列列名是ID)

文件使用的编码是 UTF-8
如果转换成 ANSI 就可以通过

然后查原因,查不出,设置了 CODEPAGE 参数也没有
在看到这篇文章后,心灰意冷

http://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=370419

难道 SQL SERVER 真不支持 UTF-8 ?
一定要我转成 ANSI?
其他倒没什么,文本里有 ANSI 不能存储 UTF-8 字符

我想问,还有什么好办法没?
希望有这类经验的,请赐教
...全文
679 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
charliesfz 2011-05-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ai_li7758521 的回复:]
lz用的SQL2008?2005是可以的。
[/Quote]

我在SQL server 2005上试了下,支持代码页 65001
-晴天 2009-06-19
  • 打赏
  • 举报
回复
试试代码页 54936
blackfire1024 2009-06-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 JonasFeng 的回复:]
不支持的UTF-8格式。
需要转成ANSI
[/Quote]

那如果文本里有 ANSI 不支持的字符怎么办
blackfire1024 2009-06-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 libin_ftsafe 的回复:]
联机帮助里 BULK INSERT 的帮助中已经说明了 SQL Server 不支持代码页 65001(UTF-8 编码)。
[/Quote]

有具体的 MSDN 链接吗?我好像没找到
ai_li7758521 2009-06-19
  • 打赏
  • 举报
回复
lz用的SQL2008?2005是可以的。
dtxh168 2009-06-19
  • 打赏
  • 举报
回复
可以用工具如 UltraEdit 转成其他的编码再导入
JonasFeng 2009-06-19
  • 打赏
  • 举报
回复
不支持的UTF-8格式。
需要转成ANSI
子陌红尘 2009-06-19
  • 打赏
  • 举报
回复
联机帮助里 BULK INSERT 的帮助中已经说明了 SQL Server 不支持代码页 65001(UTF-8 编码)。
claro 2009-06-19
  • 打赏
  • 举报
回复
用Notepad++看看。
行政区划数据库 (34个省份 396个城市 3700个区县) 区划ID-父亲ID-全称-简称-级别-邮编-区号-拼音-简拼-经纬度-省市区聚合 温馨提示 经纬度是省市区对应的中心经纬度,即国测局坐标 (GCJ02坐标:google地图、soso地图、aliyun地图、mapabc地图和amap地图所用坐标) 不是 WGS84 (gps)国际坐标; --mysql 导入数据库 --创建表 最新行政区划数据库 --字段 区划ID-父ID-全称-全称聚合-简称-简称聚合-级别-区号-邮编-拼音-简拼-首字母-经度-纬度-备注 CREATE TABLE `areas``.`areas` ( `ID` VARCHAR(45) NULL, `ParentId` VARCHAR(45) NULL, `Name` VARCHAR(45) NULL, `MergerName` VARCHAR(200) NULL, `ShortName` VARCHAR(45) NULL, `MergerShortName` VARCHAR(200) NULL, `LevelType` VARCHAR(45) NULL, `CityCode` VARCHAR(45) NULL, `ZipCode` VARCHAR(45) NULL, `Pinyin` VARCHAR(45) NULL, `Jianpin` VARCHAR(45) NULL, `FirstChar` VARCHAR(45) NULL, `lng` VARCHAR(45) NULL, `Lat` VARCHAR(45) NULL, `Remark` VARCHAR(45) NULL ); --导入数据库 LOAD DATA LOCAL INFILE 'G:\areas.txt' INTO TABLE areas FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' (ID,ParentId,Name,MergerName,ShortName,MergerShortName,LevelType,CityCode,ZipCode,Pinyin,Jianpin,FirstChar,lng,Lat,Remark); --xls 全选复制到txt --默认 txt为中文编码 导入时 请转为utf-8编码 以免乱码 --附 MSSQL导入方法: --创建 最新行政区划数据库 旗舰版 --字段 区划ID-父ID-全称-全称聚合-简称-简称聚合-级别-区号-邮编-拼音-简拼-首字母-经度-纬度-备注 CREATE TABLE [dbo].[areas]( [ID] [NVARCHAR](50) NULL, [ParentId] [NVARCHAR](50) NULL, [Name] [NVARCHAR](50) NULL, [MergerName] [NVARCHAR](200) NULL, [ShortName] [NVARCHAR](50) NULL, [MergerShortName] [NVARCHAR](200) NULL, [LevelType] [NVARCHAR](50) NULL, [CityCode] [NVARCHAR](50) NULL, [ZipCode] [NVARCHAR](50) NULL, [Pinyin] [NVARCHAR](50) NULL, [Jianpin] [NVARCHAR](50) NULL, [FirstChar] [NVARCHAR](50) NULL, [Lng] [NVARCHAR](50) NULL, [Lat] [NVARCHAR](50) NULL, [Remark] [NVARCHAR](50) NULL ) --导入数据库 BULK INSERT dbo.[areas] FROM 'G:\IP数据库\areas.sql WITH ( FIELDTERMINATOR = '\t', ROWTERMINATOR = '\n' ) --查询 SELECT * FROM dbo.areas

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧