【100分不够再加】求助关于文本问档转换到数据库的问题

IT_Fish 2006-06-27 09:06:50
目前问题:
存在文本文件,其里面包含有许多种数据结构
如:
第一行(一种数据结构):
INITRT CN92 GPL120060118090337
第二行(另一种数据结构):
A0.1242201500621CABLE CLAMP FIX NY66 52X14MM B 32PF9531/79 N
第三行(第三种数据结构):
B1.10005120. 31043284420113 01.000 None LNO


其数据结构属于哪一种主要靠前面4位字母来区分,每种数据结构的字段是直接通过字符长度来区分的,中间没有间隔符。拿第二行来说:

Name Format Remark Position
Interface Message Line Code X4 "A0.1" 1 - 4
Child 12NC X12 5 – 16
Description X30 17 – 46
Clogs Code X6 47 – 52
ESD Indicator X1 53 – 53
Component Supplier X10 54 – 63
Component Type Number X30 64 - 93
Critical Component Indicator X1 94 - 94
Critical Safety Component X1 95 - 95

请问我该怎么样才能把文本文档中的每种结构转换到数据库的每张表??
...全文
198 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lvzhiqi 2006-07-03
  • 打赏
  • 举报
回复
就象笨笨说的一样~不过我觉得用触发器好象更好~
starcby 2006-07-03
  • 打赏
  • 举报
回复
fl99(笨笨)的方法可行,我曾经做过相关的事例,具体就是将文本文件里的每一行倒入到一个临时表里,之后再用sql里的查询分析器打开这个表,编写相关的代码(其实就是利用sql自带的字符处理函数)就可以实现转录到你需要的数据库中去,而且这种方式速度飞快,原来我做的时候10万行,如果用程序一行一行的转需要7小时,后来用这种方式在sql里直接执行,只用了15秒,呵呵
八哥 2006-07-03
  • 打赏
  • 举报
回复
虽说有点难,可一样有办法.你对数据结构没有说清楚,我不能理解,只能给你一个思路

--先建立一个表TmpFile,把每行读入到表中
CREATE TABLE TmpFile(ResultTxt varchar(100) NULL)

--请入文件到表TmpFile中
BULK INSERT TmpFile FROM '文件路径' WITH (KEEPNULLS)

Declare myCur Cursor For select TmpFile from TmpFile--定义游标
declare @strtmp varchar(100) --建立一个变量
open myCur
Fetch myCur Into @strtmp 把每个值付到变量@strtmp中
While @@Fetch_status=0
Begin
if SUBSTRING(@strtmp,1,4)='xxxx' --判断每个数据结构类型,根据你的要求,我不怎么清楚
begin
--这理按你的要求把这个字符串组合成你要的格式,INSERT到你指定的表中
--后面我给你付上SQL中常用的字符串处理函数
end

if SUBSTRING(@strtmp,1,4)='xxxx' --判断每个数据结构类型,根据你的要求,我不怎么清楚
begin
--这理按你的要求把这个字符串组合成你要的格式,INSERT到你指定的表中
--后面我给你付上SQL中常用的字符串处理函数
end

--.......................
Fetch myCur Into @strtmp
End
Close myCur --关闭游标
Deallocate myCur--删除游标
dorp TmpFile --删除表TmpFile


SQL中常用字符串处理函数
LCASE( )1、LOWER( ) 将字符串转换为小写字母
LTRIM( ) 删除字符串前面的空格
SUBSTRING( ) 从字符串中提取一个或多个字符
UCASE( ) UPPER( ) 将字符串转换为大写字母


SQL中常用数据转换函数
CONVERT( ) 将数据从一种类型转换为另一种类型。格式化数据时或者在需要其它数据类型的函数中将数据列的内容作为参数时很有用。
STR( ) 将数字数据转换为字符串,以便可以用文本运算符对其进行处理。

好了,你可以建立一个存储过程,也可以直在把所用语句连在一起执行,不分行的话就用分号分开,
多给我点分,我想有一个星星
IT_Fish 2006-07-02
  • 打赏
  • 举报
回复
谢谢,楼上的兄弟。
我现在先采用最笨的办法,读取文本内容的每一行,然后按字节数来划分字段,再写进数据表。

期待更简单的办法。
addwing 2006-06-29
  • 打赏
  • 举报
回复
关注。学习。帮你顶。。。。。。。。。。
IT_Fish 2006-06-27
  • 打赏
  • 举报
回复
我试着用SQL来处理,但是SQL只能处理单一的数据结构。不知道能不能先判别每一行的4个字符,然后调用相应的SQL脚本来转换进SQL数据库?
patchclass 2006-06-27
  • 打赏
  • 举报
回复
如此复杂,估计你只能通过 读取文件的方式一个字一行行的分析了啊,没有什么好办法:_)
IT_Fish 2006-06-27
  • 打赏
  • 举报
回复
其中“X?”是表示字段划分的长度
IT_Fish 2006-06-27
  • 打赏
  • 举报
回复
有没有人近来帮我看看啊,哪怕是给个思路也好啊
还有能不能通过读文件内容,然后判断前4位来调用不同的函数处理呢?

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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