如何自定义将文件并行存入数据库的函数(要考虑线程问题)?

Redball 2003-08-22 04:08:37
比如我有一个文本文件,被切分成了三段,现并行将这三段存放到数据中的三个不同表格内,该如何实现?
读出时是逆过程,该注意什么?

请尽量给出代码,不行的话提供思想方法(线程是重点吧)也可以。


关于切分,比如原代码111222333444555666,可以被切为111444、222555、333666;也可以被切为123456、123456、123456;那种方便些啊?
...全文
155 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Redball 2003-08-24
  • 打赏
  • 举报
回复
虽然没按照我的意思答出来,但还是给分了。
Redball 2003-08-22
  • 打赏
  • 举报
回复
怎么说呢,先谢谢 zjcxc(邹建)

不过这还只是利用了SQL本身的处理机制,没有联系到线程的概念吧。
因该是否是这样,有三个函数,
第1时间:第1个函数读取第1个字节
第2时间:第1个函数读取第2个字节,第2个函数接受第1个函数的内容,交给第3个函数。
第3时间:第1个函数读取第3个字节,第2个函数接受第1个函数的内容,交给第3个函数。第3个函数将数据1存放到数据库。
第4时间:第1个函数读取第4个字节,第2个函数接受第1个函数的内容,交给第3个函数。第3个函数将数据2存放到数据库。
……

我的意思就是这样的函数在SQL里如何实现,或实现思想。
zjcxc 2003-08-22
  • 打赏
  • 举报
回复
上面语句的执行结果:
------
111
222
333
444
555
666

(所影响的行数为 6 行)

bb
------------ -----------
123456 0
123456 1
123456 2

(所影响的行数为 3 行)
zjcxc 2003-08-22
  • 打赏
  • 举报
回复
首先将数据导入到SQL中,再进行处理,例如:

--假设你的文本文件为c:\aa.txt,则处理方法如下:

--/*导入文本文件到临时表中
select * into #tb from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Text;FMT=Delimited;HDR=yes;IMEX=2;CharacterSet=936;DATABASE=C:\'
,aa#txt)

--/*数据处理
--创建数据处理临时表
select top 8000 id=identity(int,1,1)
into #tb1 from
(select top 100 id from syscolumns) a,
(select top 100 id from syscolumns) b,
(select top 100 id from syscolumns) c

--方式1
select substring(a.aa,b.id,3)
from #tb a,#tb1 b
where b.id<len(a.aa) and (b.id-1)%3=0

--方式2
select aa=substring(a.aa,b.id,1),bb=(b.id-1)%3
,up=cast('' as varchar(8000))
into #aa from #tb a,#tb1 b
where b.id<=len(a.aa)
order by bb,aa
declare @a varchar(8000),@b int
update #aa set @a=case @b when bb then @a+aa else aa end
,up=@a,@b=bb
select max(up),bb from #aa group by bb

--删除临时表
drop table #tb1,#tb,#aa
CrazyFor 2003-08-22
  • 打赏
  • 举报
回复
能不能这样:
111222333444555666---->1,1,1,2,2,2,3,3,3,.....
导入到SQL后再进行合并或并行切就方便了.
Redball 2003-08-22
  • 打赏
  • 举报
回复
更正:关于切分,比如原代码111222333444555666,
可以被切为111222、333444、555666;有点平分的意思。先给你1/3,再给你1/3(串行?)
也可以被切为123456、123456、123456;就像是发扑克牌样的平分,(并行?)

22,209

社区成员

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

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