关于将文本里的字符串的截取后写入数据库的问题文本的原始数据:
号码:123 456 789 321……//(分割符为空格)
姓名:张某,某某,李某,和某…… //(分割符为逗号)
月租:18~18~18~18……//(分割符为~)PS:文本里的每行的数据是大量的,并且号码、姓名、月租各自单独成行,行内字串的分割符各自不同(回车换行)
要实现的就是将上面的文本里的字串全部分割成独立的字串
然后插入数据库,数据库的字段分别为:
号码   姓名    月租
123    张某    18
456    某某    18
……   ……   ……各位大哥该如何实现??谢谢!!急
可另外加分,感激中

解决方案 »

  1.   

    只告诉你个思路,其实很容易做
    首先分别将号码,姓名,月租从文本中读取
    然后分别用split函数分割
    然后用循环将分割在数组中的内容插入数据库,如果你觉还是有问题,你可一把那个文本文件发给我,然后我来给你写呵呵!我的mail:[email protected]
      

  2.   

    EXEC [master].[dbo].[xp_cmdshell] 'bcp "select 字段1,字段* from 表1 queryout "d:\s.txt"  -c -t, -S -Usa -P'-t, 表示文本中的是用逗号隔开!
      

  3.   

    creazyfish(梳分头的鱼)
    只告诉你个思路,其实很容易做
    首先分别将号码,姓名,月租从文本中读取
    然后分别用split函数分割
    然后用循环将分割在数组中的内容插入数据库,如果你觉还是有问题,你可一把那个文本文件发给我
    ……
    -----------------------------
    非常感激!!
    跟我的想法一样,只是我并不知道Vb里也有这样的分割函数
    刚接触
    以前用PHP是很简单有explode函数直接使用
    不过那个文本我并没有。。只是工作关系见到那是客户给的,实际上原本就是数据库导出来的文本
    但是上面的朋友说的将文本导入自己做的数据库应该是不可行的,否则就不必提问了等我实现后,立即给分
    并且可以加分,欢迎讨论!谢谢!!!
      

  4.   

    PHP实现就容易的紧,但PHP就是无法很好的实现打印(套打)
    客户的资料动辙就成千上万
      

  5.   

    Private Sub Command1_Click()
    Dim s As String, ls_Content() As String, ls_Content1() As String, ls_Content2() As String, ls_Content3() As String
    Dim I As Long
    Dim LogCount As Long    '打开文本文件和读出#################################
        Open "f:\aaa.txt" For Input As #1
        s = StrConv(InputB(LOF(1), #1), vbUnicode) '将文件内容附给变量 S
        Close #1
        ls_Content = Split(s, vbCrLf) '将每一行的信息放入数组
        '###################################################
        ls_Content1 = Split(ls_Content(0), " ")
        ls_Content2 = Split(ls_Content(1), ",")
        ls_Content3 = Split(ls_Content(2), "~")
        
        LogCount = UBound(ls_Content1)
        For I = 0 To LogCount
            Debug.Print ls_Content1(I) '号码
            Debug.Print ls_Content2(I) '姓名
            Debug.Print ls_Content3(I) '月租
            '这就是一条记录了
        Next I
    End Sub
      

  6.   

    文本的原始数据:
    号码:123 456 789 321……//(分割符为空格)
    姓名:张某,某某,李某,和某…… //(分割符为逗号)
    月租:18~18~18~18……//(分割符为~)Dim sNo() As String
    Dim sName() As String
    Dim sRent() As String
    Dim temp As String
    Dim i As Long, n As LongOpen "f:\aaa.txt" For Input As #1
    Do Until EOF(1)
       Line Input #1, temp
       Select Case Left(temp,2)
          Case "号码"
             Do Until InStr(temp,"  ") = 0
                temp = Replace(temp,"  "," ") '消除连续空格,否则数据无法对应
             Loop
             sNo = Split(mid(temp,4)," ")      Case "姓名"
             temp = Replace(temp,",",",") '兼容中文逗号
             sName = Split(mid(temp,4),",")      Case "月租"
             sRent = Split(mid(temp,4),"~")      Case Else
             MsgBox "文本数据错误!"
             Close #1
             Exit Sub
       End Select
    Loop
    Close #1n = Ubound(sNo)
    If Ubound(sName) < n Then n = Ubound(sName)
    If Ubound(sRent) < n Then n = Ubound(sRent)
    For i = 0 To n
       cnn.Execute "Insert Into yrTable(号码,姓名,月租) Values('" & sNo(i) & "','" & _
                   sName(i) & "'," & sRent(i) & ")"
    Next i
      

  7.   

    to  xylegend(晓逸) 如果你那个文本文件是从数据库直接导出的应该是可以直接在导入相同结构的表中的!(至少sql server 和oracle 是可以的)
    sql server 用DTS导入导出向导,把那个数据源换成文本文件就可以了。^_^
    oracle 可以通过toad工具来导也很容易的
      

  8.   

    谢谢各位大哥!上班中无法调试...晚上再试.
    请继续!!
    也顺便回应一下大哥们.
    感谢tztz520(午夜逛街) 和of123() 两位大哥!!!to creazyfish(梳分头的鱼) 
    如果你那个文本文件是从数据库直接导出的应该是可以直接在导入相同结构的表中的!(至少sql server 和oracle 是可以的)
    sql server 用DTS导入导出向导,把那个数据源换成文本文件就可以了。^_^
    oracle 可以通过toad工具来导也很容易的
    --------------------------------------
    导入是绝不可行的,看看文本的数据就知道那是什么企业,怎么可能使用sql server 之类的**
    还有客户的资料只能对方提供,这些资料也是要保密的,对方的数据库当然不会允许外人接触
    更惶论是想知道数据库和其结构了!
    看看具体的数据也知不可行,因为我特别强调了:每一行的分隔符都不同,而且是很奇怪的分隔符(有空格/^/逗号等等,文本数据量极大!!!)