ADO在vba(vbs):查询插入INTO文本文件不起作用,锁定文件

问题描述:

我想查询一个文本文件,一个csv文件并将查询结果返回给一个文本文件。我试过这个应用程序https://stackoverflow.com/a/581638/3480717,它看起来很有前途,它将数据从SQL命令直接返回到一个文件,跳过创建记录集。 提示,因为它可能是,我不能让它工作,这里是我的版本:ADO在vba(vbs):查询插入INTO文本文件不起作用,锁定文件

Sub test() 

Dim db: db = "C:\Databases\" 
Dim exportFile: exportFile = "C:\Databases1\Exp.txt" 


Dim cn: Set cn = CreateObject("ADODB.Connection") 

cn.Open _ 
    "Provider = Microsoft.ACE.OLEDB.12.0;" & _ 
      "Data Source=" & db & ";" & _ 
      "Extended Properties=""text;HDR=YES;FMT=Delimited(,)""" 


cn.Execute "SELECT [Surname INTO [text;HDR=Yes;Database=" & exportDirFile & _ 
    ";CharacterSet=65001] FROM PhoneList.csv" 

cn.Close 

End Sub 

PhoneList.csv - 我的数据是姓,名和PhoneNumber三列文件。对于测试,我尝试提取PhoneNumber列。

代码停在cn.Execute

我得到一个错误说“无法更新。数据库或对象是只读的。

我在做什么(很)错了吗?我有机会获得文件/文件可以打开和保存它们,似乎问题出在别处。

它是如何将看起来像VBS?(代码并不需要Excel以可视化的任何东西)。

THX非常多的评论

cn.Execute "SELECT [Surname INTO [text;HDR=Yes;Database=" & exportDirFile & _ 
    ";CharacterSet=65001] FROM PhoneList.csv" 

应该

cn.Execute "SELECT [Surname] INTO [text;HDR=Yes;Database=" & "C:\Databases1" & _ 
    ";CharacterSet=65001] [Exp.txt] FROM PhoneList.csv" 

(文本,数据库是一个文件夹和到一个文件名的目标)

+0

谢谢。我纠正了它。现在我收到一条不同的消息:“查询输入必须至少包含一个表或查询。” 我试着将Schema.ini添加到源目录中: [PhoneList。CSV] ColNameHeader =真 格式=分隔(;) DateTimeFormat = YYYY-MM-DD 的MaxScanRows = 25 CHARACTERSET = ANSI Col1中=姓char宽度10 col2的=名称char宽度10 COL3 =无长宽度10 它仍显示相同的消息。 –

  1. 我成功了具有以下(无论是在VBA和VBS中):

    Dim db:db =“ C:\ Users \用户jkotows2 \桌面\ sql_script \ “

    昏暗CN:设置CN =的CreateObject( ”ADODB.Connection“)

    cn.Open _ ” 提供者= Microsoft.ACE.OLEDB.15.0; “& _ ”数据源=“ &分贝& ”;“ & _ ”扩展属性=“” 文本; HDR = YES; FMT =分隔(;) “” “

    cn.Execute” INSERT INTO [ exp.csv] SELECT [姓氏],[姓名],[否] FROM [PhoneList.csv]“

cn.Close

  1. 我不得不确保脚本在32位模式中执行(显然我的系统是64位和办公室是32位)。
  2. 我必须创建一个Schema.ini文件,并说明哪些表参与查询。
开始=“2”>