TXT文件数据导入,请大侠帮助!在线等

zhouye6666 2005-09-28 10:47:29
文本文件内容如下

小王 男性 19700803 142427700803541
小张 男性 19690209 130222196902095519 大新庄镇杜林村
小李 男性 19690920 610202196909200151 王益区
扬国峰 男性 19710126 王益区川口兰公房97号

在记事本中打开,看似很规则,采用等宽方式导入,导入的数据是乱的,请教各位如何解决?
要求:
1:采用语句方式,如BCP或INSERT....OPENROWSET (要在代码中使用)
2:选择某几列插入到表中某几列.
3:文本文件格式不可改变(加分隔符的方式已经做到可导入,客户不愿意多走一步,必须用他提供的上述文本格式)

各位,急呀,在线等!!!

...全文
197 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhouye6666 2005-09-29
  • 打赏
  • 举报
回复
顶上前来
liang80318 2005-09-28
  • 打赏
  • 举报
回复
不能单纯用导入数据库了,还得编个小程序最为方便
这是VB的一小段代码,简单说明一下
直接从TXT中找到数据,然后一行一行的循环判断
找到合适的数据后,用SPLIT函数分割,你的分割符可以用" ",下面有具体的代码
然后每次找到相应的数据时,就调用SQL存入数据库
这种程序直接用VB就行了,编译成个EXE文件,定好TXT的位置,每次直接让他点击这个文件就行了

On Error GoTo err:


Dim Fso As New FileSystemObject, ts As TextStream
Set ts = Fso.OpenTextFile("C:\Documents and Settings\Administrator\桌面\INVOUT.TXT")

Dim inti As Integer
Dim strs As String
Dim strt As String
Dim vntSplit As Variant
Dim str1 As String
Dim str2 As String
Dim str3 As String
Dim rs As New Recordset

Source=C:\db1.mdb;Persist Security Info=False", adOpenKeyset, adLockOptimistic
For inti = 0 To 5000
strs = ts.ReadLine
If Len(strs) > 100 Then
vntSplit = Split(strs, "~~")
str1 = vntSplit(0)

If str1 = "0" Then
str2 = vntSplit(4)
str3 = vntSplit(8)

rs.Open "insert into id(编号1,编号2) values('" & str2 & "','" & str3 & "')", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db1.mdb;Persist Security Info=False", adOpenKeyset, adLockOptimistic

End If

End If
Next

Exit Sub
err:
If err.Number = 62 Then
MsgBox "数据导入完毕!", vbExclamation
Else
MsgBox err.Description, vbExclamation
End If
zlp321002 2005-09-28
  • 打赏
  • 举报
回复
--文本文件导入到数据库

--例子:
BULK INSERT Test
FROM 'D:\Test.txt'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
select * from Test
vivianfdlpw 2005-09-28
  • 打赏
  • 举报
回复
你的是什么分隔符?

建议用Schema.ini File 控制格式
http://msdn.microsoft.com/library/en-us/odbc/htm/odbcjetschema_ini_file.asp
zhouye6666 2005-09-28
  • 打赏
  • 举报
回复
to: zhangyang555(张阳)
你的方法是改变导入数据的格式,我这里前提是不能改变.
zhangyang555 2005-09-28
  • 打赏
  • 举报
回复
可以先将你的文件用EXCEL打开,然后根据提示做,然后再从EXCEL导出csv格式的文件,再使用(bulk insert)zlp321002(如果有一天,世界会改变) 的方法
zhouye6666 2005-09-28
  • 打赏
  • 举报
回复
to: vivianfdlpw()
可以留个QQ吗,MSN什么的,详细谈谈
vivianfdlpw 2005-09-28
  • 打赏
  • 举报
回复
等宽分割
============>
schema.ini可以定义宽度
zhouye6666 2005-09-28
  • 打赏
  • 举报
回复
to:vivianfdlpw()
to: zlp321002(如果有一天,世界会改变)
你们说的都要分隔符,但提供的文本格式是没有分隔符的,数据应该是用的等宽分割.

to: liang80318(小亮)
一行一行的读是不行的,这个文本可能达到上百万条记录,这样速度肯定不行.

22,209

社区成员

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

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