需要在CSV中添加一列,为每行数据(1、2、3等)添加一个数字

需要在CSV中添加一列,为每行数据(1、2、3等)添加一个数字,csv,vbscript,Csv,Vbscript,需要附加一个CSV文件以添加一列(Pkey),每行数据的增量数字从1开始。我更喜欢用VB脚本来实现这一点,但如果有一种更简单的方法可以在windows任务调度器上运行,我愿意接受任何东西 我只需要一个脚本,在CSV中创建一个名为“Pkey”的列,并在每行数据中添加一个递增的数字+1,从1开始。这必须是唯一的计数,一直到最后一行数据 希望在列中添加标题Pkey,然后对数据行1、2、3、4、5等进行编号,直到所有数据行都用唯一的整数编号 我当前用于将查询拉入CSV并保存它的代码,每次我尝试执行增量时

需要附加一个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)

使用StdIn和StdOut意味着我们不必编写文件处理代码

1点开始

    Count = 1
    Set Inp = WScript.Stdin
    Set Outp = Wscript.Stdout
    Do Until Inp.AtEndOfStream
        Line=Inp.readline
        outp.writeline Count & vbtab & Line
        Count = Count + 1
    Loop
使用

cscript //nologo MyScript.vbs < InputFile > Outputfile
cscript//nologo MyScript.vbsOutputfile
。。。如果有一种更简单的方法可以在windows任务调度器上运行,我愿意接受任何东西

让我们做一个超级地狱

确保您正在为此使用:

function Get-MSAccessTable {
Param(
    [parameter(Mandatory=$true)] $filePath,
    [parameter(Mandatory=$true)] $tableName
)    
    $conn = New-Object System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=$filePath;Persist Security Info=False")
    $cmd=$conn.CreateCommand()
    $cmd.CommandText="Select * from $tableName"
    $conn.open()
    $rdr = $cmd.ExecuteReader()
    $dt = New-Object System.Data.Datatable
    $dt.Load($rdr)
    $conn.close()
    $dt
}   

$TextExportPath = "X:\Scripts\FTP\QuickBase Sync\CustomerData"
$TextExportFile = "$TextExportPath\MMD_Abacus.csv"

$db = "X:\VPP DATABASE\Pham.mdb"
$data = Get-MSAccessTable -filePath $db -tableName "83AFFNIGHT"

$Global:seq = 1;
$data = $data | Select-Object <LIST COLUMNS HERE>, @{label = “PKey”; Expression = {$Global:seq;$Global:seq++ }}

Remove-Item -Path "X:\Scripts\FTP\QuickBase Sync\CustomerData\MMD_Abacus.csv"  
$data | Export-Csv -Path $TextExportFile -NoTypeInformation
函数Get-MSAccessTable{
Param(
[参数(必需=$true)]$filePath,
[参数(必需=$true)]$tableName
)    
$conn=New Object System.Data.OleDb.OleDbConnection(“Provider=Microsoft.ACE.OleDb.12.0;数据源=$filePath;Persist Security Info=False”)
$cmd=$conn.CreateCommand()
$cmd.CommandText=“从$tableName中选择*
$conn.open()
$rdr=$cmd.ExecuteReader()
$dt=新对象System.Data.Datatable
$dt.负载($rdr)
$conn.close()
$dt
}   
$TextExportPath=“X:\Scripts\FTP\QuickBase Sync\CustomerData”
$TextExportFile=“$TextExportPath\MMD_Abacus.csv”
$db=“X:\VPP数据库\Pham.mdb”
$data=Get-MSAccessTable-filePath$db-tableName“83AFFNIGHT”
$Global:seq=1;
$data=$data |选择对象,@{label=“PKey”;表达式={$Global:seq;$Global:seq++}
删除项目-路径“X:\Scripts\FTP\QuickBase Sync\CustomerData\MMD\u Abacus.csv”
$data |导出Csv-路径$TextExportFile-非类型信息

vba vbscript,你是想通过Excel还是visual Studio来写这个?就一个VB脚本,我尝试了很多不同的代码示例,但没有一个能做到这一点。谢谢你,BigBen,我明白了,我只是想在不寻求帮助的情况下自己完成这项工作,我终于放弃了,请求帮助,你撞到了什么墙。大概有50000个这样的例子。读一行。添加你的列,递增,写行。Scott我只是在记事本中写出来,这样做,我读到我可以在excel中做一个宏,但我通过vbscript创建CSV,VB将access查询写入CSV,添加一个制表符分隔的列(我自90年代初以来的首选项),将
vbtab
更改为
“,”
表示逗号分隔。