Importing a text with separators

后端 未结 2 926
失恋的感觉
失恋的感觉 2020-12-19 06:01

I am trying to automate the adding of new text files, which all have the same (known) layout.

The columns are separated using tabs (the TAB button). My question is,

相关标签:
2条回答
  • 2020-12-19 06:21

    With the import wizard the downside is that for even the slightest change in file format, you'll have to click through all those steps yet again to get the import working.

    Check out @Remou's answer in ms Access import table from file in a query for a way to do it in straight SQL. I am actually using the same method in a project of mine. I use something like this (see my link for the details):

    insert into MyTable (column-list...)
    select (column-list...)
    from [data-source-specifications].[file-name]
    any-other-clauses...;
    

    Just one caveat. If you put this SQL syntax into a normal Access query object, there's a good chance that Access will mangle it to the point where it won't even be able to open the query object. So compose and save the query in a text file while you try it out in Access. Once the query is tested and working, save it in a VBA subroutine so that Access will run it exactly as is, like so:

    sub MyTableImport()
      sqlStr = "         insert into MyTable (column-list) " ' leave a space at the
      sqlStr = sqlStr & "select (column-list...) " ' end of each line of the string
      sqlStr = sqlStr & "from [data-source-specifications].[file-name] "
      sqlStr = sqlStr & "any-other-clauses... ;"
    
      DoCmd.RunSQL sqlStr
    end sub
    
    0 讨论(0)
  • 2020-12-19 06:28

    You'll need to go through the wizard once to make your specification file. TO do this import your text file like normal but before you get too deep into the wizard click on the bottom left, the "Advanced..." button. This is where you make your spec file.

    enter image description here

    Make ll these columns match your input file, data types and all. Be sure to select the {tab} field delimiter and the appropriate text qualifier if you are using one.

    enter image description here

    Save your spec (which can later be edited by coming back to this same screen and clicking Specs... then saving over your old one)

    Now you can use in VBA like this

    DoCmd.TransferText acImportDelim, "your spec name", "destination table name", sourceFilePath
    

    There is a parameter HasFieldNames that you'll have to decide if it is true or false based on your file.

    0 讨论(0)
提交回复
热议问题