标题:求一段VB比较d盘的两个.txt文件并提取不同数据的代码
只看楼主
vbcaonia
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2016-5-4
得分:0 
回复 9楼 冬瓜汤
用grep和awk,不重复的800万找800万也只要7秒


[此贴子已经被作者于2023-2-5 16:39编辑过]

2023-02-05 16:34
vbcaonia
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2016-5-4
得分:0 
回复 10楼 风吹过b
谢谢版主!!!

另外请教一下access数据库txt数据导入问题:
F盘有access数据库:数据条件源.mdb,仅有一个字段:表1,用下面程序将txt文件逐行写入到表1各记录,速度很慢,请版主提提速度!



Private Sub Command9_Click()
Dim log1 As String
Dim Con As New adodb.Connection
Dim Rs As New adodb.Recordset

Con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\数据条件源.mdb;Persist Security Info=False"
 Con.Open '打开数据库
Con.Execute ("delete from 表1") '清空表1
CommonDialog1.ShowOpen '打开对话框
t = CommonDialog1.FileName '获取文件名
Open t For Input As #1 '打开文件并读入
Do While Not EOF(1) '表示1号文件没有尾部
Input #1, log1
Con.Execute ("insert into 表1 values( '" & log1 & "')")
Loop
Close #1
ErrHandler: '

Exit Sub
End Sub
2023-02-05 18:25
mrexcel
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:125
专家分:480
注 册:2022-11-3
得分:5 
以下是引用vbcaonia在2023-2-5 18:25:45的发言:

谢谢版主!!!

另外请教一下access数据库txt数据导入问题:
F盘有access数据库:数据条件源.mdb,仅有一个字段:表1,用下面程序将txt文件逐行写入到表1各记录,速度很慢,请版主提提速度!



Private Sub Command9_Click()
Dim log1 As String
Dim Con As New adodb.Connection
Dim Rs As New adodb.Recordset

Con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\数据条件源.mdb;Persist Security Info=False"
 Con.Open '打开数据库
Con.Execute ("delete from 表1") '清空表1
CommonDialog1.ShowOpen '打开对话框
t = CommonDialog1.FileName '获取文件名
Open t For Input As #1 '打开文件并读入
Do While Not EOF(1) '表示1号文件没有尾部
Input #1, log1
Con.Execute ("insert into 表1 values( '" & log1 & "')")
Loop
Close #1
ErrHandler: '

Exit Sub
End Sub


试试把文本文件直接作为数据源整体导入, "INSERT INTO 表1 SELECT * " _
        & "FROM [data.txt] IN '" & path & " where ..."
2023-02-06 08:37
vbcaonia
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2016-5-4
得分:0 
回复 13楼 mrexcel
版主你好我写了一下没成功,麻烦你在附件按钮2中写段代码,谢谢!


F盘有access数据库:数据条件源,在电脑中选择.txt文本导入到表1的数据字段中其结果如附件“导入数据按钮”。


vb-数据导入.part001.rar (5 MB)
vb-数据导入.part002.rar (316.09 KB)
2023-02-06 10:23
mrexcel
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:125
专家分:480
注 册:2022-11-3
得分:0 
程序代码:
Private Sub 表1导入数据()
Dim Con As New ADODB.Connection
With Con
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\数据条件源.mdb;Persist Security Info=False"
.Open '打开数据库
.Execute ("insert into 表1  SELECT * FROM [text;HDR=no;Database=F:\].[DATA.txt];")
End With
End Sub

测试通过
2023-02-06 11:49
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:5 
也可以直接将TXT的文件夹当作“数据库”,TXT当作数据表,但这效率并不一定会有大提高。

程序代码:
Sub Main()
    Dim con
    Set con = CreateObject("ADODB.Connection")
    con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='text;HDR=NO';Data Source=D:\temp\test\vb-数据导入\"
    con.Open
    Dim rec, field
    Set rec = CreateObject("ADODB.Recordset")
    rec.Open "SELECT * FROM aaa.txt", con, 1, 3, 1
    rec.MoveFirst
    Do While Not rec.EOF()
        For Each field In rec.fields
            Debug.Print field.Value
        Next
        rec.MoveNext
    Loop
    rec.Close
    con.Close
End Sub
2023-02-06 13:58
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以“行串”比对,先按“行串”排序,这样用两个文件“行串”指针同时扫描一次两个文件,比对“行串”就可以得到结果。
2023-02-06 14:06
vbcaonia
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2016-5-4
得分:0 
回复 15楼 mrexcel
版主你好,我弄来弄去就是不成功,提示包含没知字段名或者是找不到[DAFA.TXT],你试一下我发的附件数据能否导入,谢谢!

数据.rar (196 Bytes)




[此贴子已经被作者于2023-2-6 19:00编辑过]

2023-02-06 15:35



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-511215-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.077059 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved