注册 登录
编程论坛 SQL Server论坛

求助:文本转化成数据库问题 急!!

aubblove 发布于 2007-11-21 09:39, 1084 次点击
只有本站会员才能查看附件,请 登录



这个表是从文本导入数据库的, 只有一列,现在要把它做成
题名 作者 机构 刊名 ISSN号 CN号 关键词 分类号 文摘 【馆藏号】
新品 无 不详 .. .. .. .. .. .. ..

这样的表怎么做?有会的朋友帮帮忙,紧急求救!!
12 回复
#2
bygg2007-11-21 10:23
行列转换??
#3
aubblove2007-11-21 10:27

create table #a1
(
id_num int IDENTITY(1,1),
作者 nvarchar(255)
)
go
insert into #a1
select 作者=substring(col001,6,254) from k1 where substring(col001,1,5)='【作 者】'

create table #a2
(
id_num int IDENTITY(1,1),
题名 nvarchar(255)
)
go
insert into #a2
select 题名=substring(col001,6,254) from k1 where substring(col001,1,5)='【题 名】'

create table #a3
(
id_num int IDENTITY(1,1),
刊名 nvarchar(255)
)
go
insert into #a3
select 刊名=substring(col001,6,254) from k1 where substring(col001,1,5)='【刊 名】'

select * from #a1
go
select * from #a2
go
select * from #a3

create table #a77
( id_num int IDENTITY(1,1),
题名 nvarchar(255) ,
作者 nvarchar(255) ,
刊名 nvarchar(255)
)
insert into #a77
select a.题名,b.作者,c.刊名
from #a2 as a inner join #a1 as b on a.id_num=b.id_num
inner join #a3 as c on b.id_num=c.id_num


版主,我是用上面的语句转化的,但是结果就错位了,请教下有没有好的方法啊

#4
aubblove2007-11-21 10:55
版主,帮我看一下啊,谢了
#5
缘吇弹2007-11-21 13:16
以下是引用aubblove在2007-11-21 10:27:48的发言:

create table #a1
(
id_num int IDENTITY(1,1),
作者 nvarchar(255)
)
go
insert into #a1
select 作者=substring(col001,6,254) from k1 where substring(col001,1,5)='【作 者】'

create table #a2
(
id_num int IDENTITY(1,1),
题名 nvarchar(255)
)
go
insert into #a2
select 题名=substring(col001,6,254) from k1 where substring(col001,1,5)='【题 名】'

create table #a3
(
id_num int IDENTITY(1,1),
刊名 nvarchar(255)
)
go
insert into #a3
select 刊名=substring(col001,6,254) from k1 where substring(col001,1,5)='【刊 名】'

select * from #a1
go
select * from #a2
go
select * from #a3

create table #a77
( id_num int IDENTITY(1,1),
题名 nvarchar(255) ,
作者 nvarchar(255) ,
刊名 nvarchar(255)
)
insert into #a77
select a.题名,b.作者,c.刊名
from #a2 as a inner join #a1 as b on a.id_num=b.id_num
inner join #a3 as c on b.id_num=c.id_num


版主,我是用上面的语句转化的,但是结果就错位了,请教下有没有好的方法啊

用得着这么麻烦吗?

create database 缘吇弹
go
use 缘吇弹
go
create table a(col1 char(255) primary key)
go
insert into a
values('【作 者】缘吇弹')
insert into a
values('【题 名】行列变换')
go
select 作者=substring((select * from a where substring(col1,1,5)='【作 者】'),6,254),
题名=substring((select * from a where substring(col1,1,5)='【题 名】'),6,254)
into b
select * from b
go

#6
purana2007-11-21 13:28

to 5楼的
如果你的insert into是这样呢
insert into a
values('【作 者】缘吇弹')
insert into a
values('【题 名】行列变换')

insert into a
values('【作 者】缘吇弹1')
insert into a
values('【题 名】行列变换2')

..能运行么?.

#7
aubblove2007-11-21 14:04
以下是引用purana在2007-11-21 13:28:48的发言:

to 5楼的
如果你的insert into是这样呢
insert into a
values('【作 者】缘吇弹')
insert into a
values('【题 名】行列变换')

insert into a
values('【作 者】缘吇弹1')
insert into a
values('【题 名】行列变换2')

..能运行么?.

是啊,select 作者=substring((select * from a where substring(col1,1,5)='【作 者】'),6,254),
题名=substring((select * from a where substring(col1,1,5)='【题 名】'),6,254)
into b 只能插入一行,版主还有别的方法吧

#8
purana2007-11-21 14:49
我只想到用游标去判断.再插入.
#9
aubblove2007-11-21 15:25
游标啊,我没有用过啊,能写出来一点吗,版主?
#10
aubblove2007-11-21 17:22

几位版主,白天没空,晚上有空帮我看看哦,急死了,也不知道该怎么做了/

#11
aubblove2007-11-21 17:26
有谁会的还望相助,谢了!
#12
缘吇弹2007-11-21 18:14
以下是引用purana在2007-11-21 13:28:48的发言:

to 5楼的
如果你的insert into是这样呢
insert into a
values('【作 者】缘吇弹')
insert into a
values('【题 名】行列变换')

insert into a
values('【作 者】缘吇弹1')
insert into a
values('【题 名】行列变换2')

..能运行么?.

当然是不能运行啦.因为只有一个缘吇弹.

呵呵,纯属玩笑.我起初以为每行记录的前5个字符都是不同的.
LZ试下purana说的游标方法吧.

#13
逍遥帅哥2007-11-23 10:29
不知楼主提供的数据有没有EXCEL格式的,在EXCEL里可以用选择性粘贴里的转置将一列数据转成多列,然后保存成.txt格式,再导入进SQL2000里
1