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