设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

1234下一页
返回列表 发新帖
查看: 13891|回复: 33
打印 上一主题 下一主题

[表] 再谈批量导入CSV文件

[复制链接]
跳转到指定楼层
1#
发表于 2013-4-7 15:29:18 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我在论坛里找到Grant版主的一篇例子,非常好.美中不足是在我的导入文件夹里有两类文件,都是CVS文件,但列数不同,两类文件在文件名上有区分,一个是以"N"结尾,一个是以"Y"结尾.
我的思路是:1.窗体1中列表框List1中的文件,默认值是全部导入同一个表(我再用查询将两类文件分开),不需要的文件人工点击取消.目前的问题是由于两类文件列数不同无法同时导入一个表.因为我的文件数量比较多,如果人工分两次导入不太方便.
2.如果不能将两类文件一次导入一个表内,能否根据文件名,将两类文件分别导入相应的表内.
请高手指点,谢谢!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
33#
发表于 2013-5-12 11:30:49 | 只看该作者
aslxt 发表于 2013-5-12 11:29
解决就好,“速度慢了好多 有的时候超过10万行 感觉像死机了一样
"可以做一个进度条,好看一些

谢谢 又学了很多
32#
发表于 2013-5-12 11:29:37 | 只看该作者
解决就好,“速度慢了好多 有的时候超过10万行 感觉像死机了一样
"可以做一个进度条,好看一些
31#
发表于 2013-5-12 11:17:17 | 只看该作者
实在对不起了 让您白等了 领导不让传 呵呵 不过问题解决了 我刚才数据弄错了 再次感谢aslxt 就是逐行读取速度慢了好多 有的时候超过10万行 感觉像死机了一样
30#
发表于 2013-5-12 11:03:25 | 只看该作者
您稍等,我需要处理一下,有数据不能公开,我立刻处理
29#
发表于 2013-5-12 10:48:49 | 只看该作者
本帖最后由 aslxt 于 2013-5-12 10:54 编辑

把你的实例贴上来(access【2007版本及以下】和csv文件)
或加我qq:853156456
28#
发表于 2013-5-12 10:46:29 | 只看该作者
aslxt 发表于 2013-5-10 19:35
当然“SQL=....” 的语法要根据自己的表重新改过,才能实际运用

再次感谢aslxt 可是我用您逐行读取的方式试了一下,问题还是没解决,还是会变成“1.002”之类的数据.
27#
发表于 2013-5-12 10:02:02 | 只看该作者
aslxt 发表于 2013-5-10 19:35
当然“SQL=....” 的语法要根据自己的表重新改过,才能实际运用

谢谢 太厉害了 好好学习中
26#
发表于 2013-5-10 19:35:56 | 只看该作者
当然“SQL=....” 的语法要根据自己的表重新改过,才能实际运用
25#
发表于 2013-5-10 19:28:48 | 只看该作者
本帖最后由 aslxt 于 2013-5-10 19:34 编辑

目前只能用逐行读取文本文件的方式可以保存数据的原样,参考代码如下:
Private Sub Command0_Click()
     Dim varItem As Variant
    With Application.FileDialog(3) 'msoFileDialogFilePicker
      .AllowMultiSelect = True       '允许选择多个文件
      .Filters.Clear
      .Filters.Add "CSV Files", "*.CSV"        '只显示CSV文件,可根据需要改变
      If .Show Then
        For Each varItem In .SelectedItems
          DR varItem
        Next
      End If
    End With
End Sub

Function DR(ByVal MYspath As String)
    Dim SQL, STR
    Dim i As Long
    Dim A
    Close #1
    i = 0
    Open MYspath For Input As #1
        Do While Not EOF(1)
            Line Input #1, STR    '   逐行读入
            i = i + 1
            A = Split(STR, ",") '这里不允许csv文件的数据设为千分位,文本字符间不能有半角逗号
            If i > 1 Then
                SQL = "INSERT INTO tbl_Export ( [VENDOR NO], [CUSTOMER NO], [INVOICE NO], [BL DATE], [MODEL NO], QTY, PRICE, AMOUNT ) VALUES (" & _
                      """" & A(0) & """" & "," & """" & A(1) & """" & ", " & """" & A(2) & """" & ", " & "#" & A(3) & "#" & "," & """" & A(4) & """" & ", " & A(5) & ", " & A(6) & ", " & A(7) & " )"
                Debug.Print SQL
                CurrentProject.Connection.Execute SQL
            End If
        Loop
    Close #1
End Function
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-12-1 17:57 , Processed in 0.115220 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表