Необходимо добавить CSV-файл, чтобы добавить столбец (Pkey) с приращением числа, начинающимся с 1, для каждой строки данных.Я предпочитаю, чтобы сценарий VB делал это, но если есть более простой метод, который я могу запустить в планировщике задач Windows, я открыт для всего.
Мне просто нужен сценарий, который создает столбец в CSV с именем "Pkey "и добавляет увеличивающееся число +1 к каждой строке данных, начиная с 1. Это должен быть уникальный счетчик вплоть до последней строки данных.
Ожидается добавление столбца с заголовком Pkey, затем нумерация строк данных 1,2,3,4,5 и т. Д., Пока все строки данных не будут пронумерованы уникальным целым числом
Код, который я в настоящее время использую, чтобы перетащить запрос в CSV и сохранить его, каждый раз, когда я пытаюсь сделать приращение, он ломает скрипт:
Option Explicit
Dim TextExportPath
Dim TextExportFile
Dim db
Dim cn
Dim strCon
Dim objFileSys
db = "X:\VPP DATABASE\Pham.mdb"
TextExportPath = "X:\Scripts\FTP\QuickBase Sync\CustomerData\"
TextExportFile = NewFileName(TextExportPath)
Set objFileSys = CreateObject("Scripting.FileSystemObject")
If objFileSys.FileExists("X:\Scripts\FTP\QuickBase Sync\CustomerData\MMD_Abacus.csv") Then
objFileSys.DeleteFile "X:\Scripts\FTP\QuickBase Sync\CustomerData\MMD_Abacus.csv"
End If
Set cn = CreateObject("ADODB.Connection")
cn.Open _
"Provider = Microsoft.Jet.OLEDB.4.0; " & _
"Data Source =" & db
cn.Execute "SELECT * INTO [text;HDR=Yes;Database=" & TextExportPath & _
"]." & TextExportFile & " FROM 83AFFNIGHT"
Function NewFileName(TextExportPath)
Dim fs
Dim NewFileTemp
Dim a, i
Set fs = CreateObject("Scripting.FileSystemObject")
NewFileTemp = "MMD_Abacus" & ".csv"
a = fs.FileExists(TextExportPath & NewFileTemp)
NewFileName = NewFileTemp
End Function
Поэтому я бы добавил что-то подобное или даже создал быотдельный скрипт vb для запуска после этого?
Dim lines As New List(Of String)
Dim lineNumber = 1
Using parser As New TextFieldParser("TextFile1.txt") With {.Delimiters = {","}}
Do Until parser.EndOfData
Dim fields = parser.ReadFields()
'Add quotes around the column that may be multiline.
fields(1) = $"""{fields(1)}"""
lines.Add(String.Join(",", fields) & "," & lineNumber)
lineNumber += 1
Loop
End Using
File.WriteAllLines("TextFile1.txt", lines)