急!!!!bulk insert语句导数据到表中,如果数据量稍大,怎么会把文本里的内容顺序打乱?有什么办法可以解决吗?

老马2008 2006-03-21 03:09:53
请各位高手指教,小弟数据大概866 KB左右,但是查询出来的数据顺序已经变了。。

Create table #tempXML (line varchar(8000))
BULK INSERT #tempXML FROM 'f:\sql\151826.xml'
WITH (
FIELDTERMINATOR = ';',
ROWTERMINATOR = '\n'
)
select * from #tempXML

谢谢!!
...全文
206 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
老马2008 2006-03-21
  • 打赏
  • 举报
回复
那我现在怎么样加上这个索引呢?因为字段是有重复的,不能设置主键的,刚才测试过了,加了一个自增长字段还是不行...急..
老马2008 2006-03-21
  • 打赏
  • 举报
回复
表中只有一个字段,没有排序列,既然按照顺序插入,怎么select出来的时候错误呢?

刚刚试过了,如果文件大小小于100kb就不会出错哦,但是bulk insert的参数不能使动态的啊..

declare @frow int
declare @lrow int
set @frow = 0
set @lrow = 2000

Create table #tempXML (line varchar(8000))
BULK INSERT #tempXML FROM 'f:\sql\151826.xml'
WITH (
FIRSTROW = @frow,
LASTROW = @lrow
)
select * from #tempXML
---------------------------
Server: Msg 170, Level 15, State 1
Line 10: Incorrect syntax near 'FIRSTROW'.
lsqkeke 2006-03-21
  • 打赏
  • 举报
回复
请注意:
表中数据的物理存储顺序是由聚集索引决定的!
查询表时,如果不显示指定order by,那么显示顺序是有非聚集索引决定的
如果表中有主键(默认聚集索引),没有其它索引了,那么显示出的顺序就是你插入时的顺序
但如果表中没有任何索引,也没有主键,查询时的顺序是无序的!与你插入顺序无关

虽然bulk insert 数据插入数据库,是按照文件中记录的先后插入的,
但 select 时是无序的 所以数据顺序改变了
huailairen 2006-03-21
  • 打赏
  • 举报
回复
没有排序列吗?
有排序列的话可以按排序列排序
没有排序列怎么会乱了呢?

22,300

社区成员

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

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