使用bulk insert将txt文件数据转为sql的时候,顺序发生改变,请问怎么使写入的顺序和txt顺序一样?

leohongbo 2003-08-22 09:26:35
我使用bulk insert。将txt文件如下:
1|854612|68453
2|145161|54981
3|445651|14556
写入到数据库,发现顺序发生了可能在数据库中变为
3 445651 14556
1 854612 68453
2 145161 54981
我使用了bulk中的order行,却没有任何效果,请问如何处理,非常着急!!!
我希望使顺序保持一致,请问大家如何设置bulk insert或者数据库来解决这个问题
不用bulk insert,用其他的方法也可以,如bcp,当然要大批量处理数据,不能一条一条写到数据库。
...全文
223 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
mitaro 2003-12-10
  • 打赏
  • 举报
回复
一下数据用bulk insert怎么写?

abc abc abc a
sdf dsa s
asd akk ksd a
sss sss s
als aaa aaa a
aaa aaa aaa a
sld l

四个字段,某些字段有时有字符有时没有,某些列后面空一格,某些列后面空三格。怎么办?严重感谢。
leimin 2003-08-23
  • 打赏
  • 举报
回复
1.create table test(id int primary key,col1 varchar(10),col2 varchar(10))
2.create a test file in c:\test.txt
1|854612|68453
2|145161|54981
3|445651|14556
4|854612|68453
5|145161|54981
6|445651|14556
7|854612|68453
8|145161|54981
9|445651|14556
3.use BCP utility
bcp pubs..test in c:\test.txt -c -t"|" -Usa -P -S%computername%
pengdali 2003-08-22
  • 打赏
  • 举报
回复
你把第一列定义为主键,就什么问题都没有了。
nboys 2003-08-22
  • 打赏
  • 举报
回复
但注意字段分割必须用逗号.


select * from openrowset('Microsoft.Jet.OLEDB.4.0','Text;Database=c:\;','select * from [test#txt]') order by .......
nboys 2003-08-22
  • 打赏
  • 举报
回复
大容量操作也可以用bcp

select * from openrowset('Microsoft.Jet.OLEDB.4.0','Text;Database=c:\;','select * from [test#txt]')

nboys 2003-08-22
  • 打赏
  • 举报
回复
Order指定数据文件中的数据如何排序。如果装载的数据根据表中的聚集索引进行排序,则可以提高大容量复制操作的性能。如果数据文件基于不同的顺序排序,或表中没有聚集索引,ORDER 子句将被忽略。给出的列名必须是目的表中有效的列。默认情况下,大容量插入操作假设数据文件未排序。
hjb111 2003-08-22
  • 打赏
  • 举报
回复
请使用Dts来导出.txt,再用.txt导入!
CrazyFor 2003-08-22
  • 打赏
  • 举报
回复
TRY:

truncate table 临时的表 -----一定要用truncate table
bulk insert 临时的表 ........

insert into 你的表 select * from 临时的表
menong 2003-08-22
  • 打赏
  • 举报
回复
为什么要物理位置一样?你需要物理位置一样,建一个聚焦索引就行了
nboys 2003-08-22
  • 打赏
  • 举报
回复
可以增加一个时间字段,并且按时间排序.

然后
insert into tableName......
select *,getdate() from openrowset('Microsoft.Jet.OLEDB.4.0','Text;Database=c:\;','select * from [test#txt]')

这样就只能按你每次写入的数据先后显示了
leohongbo 2003-08-22
  • 打赏
  • 举报
回复
第一列设为主键,我又不是把整个表按从小到大得顺序排列的!
提供得txt文件有很多,可能要将几个txt的内容放到一个表中,txt文件中是按照某一列排序的,但是写到表中的时候,我并不希望把这一列再整个来排一次序,而是按照txt的先后顺序放入,也就是说一个那个txt文件先放进去,那么肯定它的数据在前面,我只是希望不改变某一个txt内部数据间得先后顺序。
第一列设为主键后,整个都排序,对我来说,把各个txt文件都拆散了,没有意义!
(当然,txt文件)

有其他的方法,请写详细一点sql语句,我都是通过语句来实现的,不能手动完成。否则没分!

22,209

社区成员

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

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