我的问题很简单.想象一下,您在CSV中有以下数据:
Name, Age, Gender
Jake, 40, M
Bill, 17, M
Suzie, 21, F
Run Code Online (Sandbox Code Playgroud)
导入上述CSV时是否可以排除Age变量?我目前的方法是简单地使用cutshell命令.
更新
iluvcapra对小型CSV有很好的答案.但是,对于非常大的CSV,这种方法效率很低.例如,假设上面的CSV非常大,30Gb可以说.仅加载所有Age数据以立即删除是浪费时间.考虑到这一点,是否有更有效的方法将列子集加载到sqlite数据库?
我怀疑最好的选择是使用shell命令cut来剔除不必要的列.这种直觉是否正确?使用shell命令将CSV文件预处理成更多sqlite友好版本是否常见?
谢谢!
我有一个名为CSV的字段.但是,我想将其重命名为Name.
我在下面有以下代码.但是,我不知道如何处理t和之间的空间N.
我尝试过使用引号和其他一些技巧,但到目前为止还没有用过.我需要做些什么才能获得价值?
Import-Csv .\Downloads\addata.csv | Select @{n="Name";e={$_.First Name}}
Run Code Online (Sandbox Code Playgroud) 我正在尝试导入csv,搜索每行中的单元格值(列),然后查找并计算任何空值或空值.然后,如果计数达到13,则执行X.但是,当我运行此代码时,单元格/列值似乎是单个对象而不是每列的单个值?如何搜索行中的单个单元格值?
示例代码
$DataFileLocation = "\\Server\Output.csv"
$sheet = import-csv $DataFileLocation
$count = 0
foreach ($row in $sheet) {
foreach ($column in $row) {
Write-Host "Searching value: $column"
if ($column -eq $null -or " ") {
Write-Host "Found a blank!"
$count++
}
}
$count
if ($count -eq 13) {
Write-Host "Found match!" -ForegroundColor Red
}
$count = 0
}
Run Code Online (Sandbox Code Playgroud) 我大多只是想指向正确的方向,所以我可以自己把它拼凑起来.我有相当数量的批处理文件脚本编制经验.我是PS菜鸟,但我认为PS对于下面的项目会更好.
我们有软件需要客户端ID作为安装字符串的一部分(以及交换机,usr/pass,其他交换机,日志记录路径等).
我已经创建了一个批处理文件(实际上有数百个),我PSEXEC在远程计算机上执行这个文件,但它很有用,但维护起来却很糟糕.每个中唯一的变化是客户端ID.
我正在尝试做的是使用带有2列的CSV作为输入(所以我只需要维护CSV):机器名称(如图所示%hostname%)和客户端ID.我想创建一个%hostname%与第1列中相应行匹配的脚本,读取同一行第2列中的数据,然后能够将其作为安装字符串中的变量调用.
EG如果我的CSV bobs-pc在第1列第6行中,则在以下安装字符串中插入第2行第6行(我们称之为0006)中的数据:
install.exe /client_ID=0006
Run Code Online (Sandbox Code Playgroud)
没有循环 由于我们运行的多个时区,我不希望它同时安装在所有机器上.
这样的事情对于我所拥有的许多项目都非常有用,所以我对学习更感兴趣,而不是让任何人为我编写.
我明白我应该用Import-Csv.我已经创建了一个示例csv,可以在PS中打印出某些字段.我需要的是脚本能够将这些字段作为变量插入安装字符串中.
我有一个CSV文件,它有两列Employee和Manager,我想将它们导入两个变量,以便稍后在我的脚本中使用.但是,当我运行我的代码时,它只捕获CSV中的最后一个数据项,因为前一个数据项被覆盖.
$CSVFiles = Import-CSV "C:\T2\EmployeeManager.csv"
ForEach($CSVFile in $CSVFiles)
{
$Employee = ($CSVFile.Employee); $Manager = ($CSVFile.Manager)
}
Run Code Online (Sandbox Code Playgroud) 我正在将此CSV文件导入到powershell中,但未导入标头和所有列。它仅获得第一列,但认为没有标题。我意识到第二行是空的,但这是软件如何使用需要处理的数据生成CSV文件的方式。
CSV档案:
#,Labels,Machine Name,System Description,IP,User Logged,Disk Free C
,,,,,,
6,"computers-PRO,Desktop,Office 2010,OS Windows 7,Update Adobe Reader",PRO-MEDASST,91-0-928,172.10.201.111,CHR\\jeniferc,6.3
7,Update Adobe Reader,RED,empty,172.10.201.5,,9.5
8,Update Adobe Reader,SIER,empty,172.10.201.5,,6.8
Run Code Online (Sandbox Code Playgroud)
Powershell代码:
$computerscsv = import-csv -Path "C:\C Drives Less than 10GB free.csv" #import the csv file
$computerscsv | Format-Table
pause
Run Code Online (Sandbox Code Playgroud)
Powershell输出:
WARNING: One or more headers were not specified. Default names starting with "H" have been used in place of any missing
headers.
H1
--
6
7
8
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激。
如何将CSV文件的对象传递到Get-CMUserDeviceAffinity的DeviceName参数?
我有一份电脑清单.我想为此列表中的每台计算机生成一个主要用户列表.我正在使用PowerShell和SCCM模块,到目前为止,我已经尝试了一个单行程以及更多罗嗦的东西无济于事.
One-Liner失败:
Import-CSV C:\temp\computerlist.csv | Get-CMUserDeviceAffinity -DeviceName $($_.Name)
Run Code Online (Sandbox Code Playgroud)
脚本失败:
$Computers = C:\computers.CSV
ForEach ($Computer in $Computers) {
Get-CMUserDeviceAffinity -DeviceName $_.Name
Run Code Online (Sandbox Code Playgroud)
结果都失败了:
Cannot validate argument on parameter 'DeviceName'. The argument is null or empty. Provide
an argument that is not null or empty, and then try the command again.
At line:1 char:77
+ ... p\computerlist.csv | Get-CMUserDeviceAffinity -DeviceName $($_.Name)
+ ~~~~~~~~~~
+ CategoryInfo : InvalidData: (:) [Get-CMUserDeviceAffinity], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ConfigurationManagement.Cmdlets.Collections.C
ommands.GetUserDeviceAffinityCommand
Run Code Online (Sandbox Code Playgroud) 我有一个python脚本执行一个gbq作业,将csv文件f加载到BigQuery上的表.所有数据写入一列,但我希望它被加载到每一列.我尝试自动检测,但它也没有帮助.我的csv:
id,first_name,username,last_name,chat_username,chat_id,forward_date,message_text
231125223~Just~koso~swissborg_bounty~-1001368946079~1517903147~test
481895079~Emerson~EmersonEmory~swissborg_bounty~-1001368946079~1517904387~picture
316560356~Ken Sam~ICOnomix~swissborg_bounty~-1001368946079~1517904515~Today
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
from google.cloud.bigquery import Client
import os
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = '***.json'
os.environ['GOOGLE_CLOUD_DISABLE_GRPC'] = 'True'
from google.cloud import bigquery
dataset_name = 'test_temporary_dataset'
table_name='table_telega'
bigquery_client = bigquery.Client()
dataset = bigquery_client.dataset(dataset_name)
table = dataset.table(table_name)
#table.reload()
job_config = bigquery.LoadJobConfig()
job_config.source_format = 'text/csv'
job_config.skip_leading_rows = 1
job_config.autodetect = True
job_config.allow_jagged_rows=True
job_config.allow_quoted_newlines=True
job_config.fieldDelimiter='~'
with open('tele2.csv', 'rb') as source_file:
#job = table.upload_from_file(source_file, source_format='text/csv')
job=bigquery_client.load_table_from_file(source_file, table, job_config=job_config)
job.result()
Run Code Online (Sandbox Code Playgroud)
如何逐列正确加载csv
我正在制作一个能够从CSV文件中读取大量数据的软件.CSV文件使用';' 作为分隔符.最近我发现某些单元格中的文本也是";".文件中的每个元组都是一个Object,因此该行中的每个单元格都是该Object的Attribute.我在C#中使用Split方法,它返回一个字符串数组.因为';' 在某些单元格中,我收到错误:数组超出范围.有没有办法摆脱这个错误而不删除';' 从一些细胞?
这样一个元组的示例:
小区1,小区2,小区3; stillCell3;小区4;
Cell3; stillCell3是一个单元格,但Split方法不知道.
我正在尝试制作一个 bat 文件脚本,将 csv 的信息附加到另一个已经存在的 csv 文件中。我想使用 import-csv 命令,但我不断收到错误消息:
'import-csv' 不是内部或外部命令,也不是可运行的程序或批处理文件。
我使用的是 Powershell 5.1,所以我尝试下载并使用 Powershell Core 6。这也不起作用。我在某处缺少图书馆吗?
我的代码:
import-csv "tinyTesterB.csv"
pause
Run Code Online (Sandbox Code Playgroud) import-csv ×10
powershell ×7
csv ×3
arrays ×1
batch-file ×1
c# ×1
delimiter ×1
import ×1
list ×1
python ×1
python-3.6 ×1
sccm ×1
select ×1
shell ×1
sql ×1
sqlite ×1
unix ×1
wmi ×1