簡體   English   中英

從csv中刪除完整的列和數據

[英]removing a complete column and data from csv

我已經以csv格式導出了我的sql dump,所以假設我的模式就像name,email ,country ,我想從csv中刪除email列及其所有數據。 什么是使用工具或任何技術做到這一點的最優化方法。我試圖在excel中加載該轉儲,但是看起來不合適

您可以復制mysql數據庫中的表,使用某些mysql客戶端刪除email列,然后導出回csv。

導入到excel應該可以處理有序數據-如果您的數據包含逗號(例如地址),則可能需要考慮其他定界符。 如果可能,請使用其他定界符,在麻煩的字段周圍添加引號或移至固定寬度的輸出。

您編寫或使用的任何工具都必須能夠解析您的數據,並且如果分隔符分散在數據中,那將始終是一個問題。

或者,重寫最初生成數據集的視圖/選擇/過程。

該命令應該執行此操作(假設使用unix * OS):

$ cut -d ',' -f 1,3- dump.csv > newdump.csv

更新 :DevZer0是正確的,這不適合一般情況。 因此,您可以這樣做(經過測試):

#!/usr/bin/env perl
use Text::ParseWords;
my $file = 'dump.csv';
my $indexOfFieldToBeRemoved = 1; # 0, 1, ...
my @data;
open(my $fh, '<', $file) or die "Can't read file '$file' [$!]\n";
while (my $line = <$fh>) {
    chomp $line;
    my @fields = Text::ParseWords::parse_line(',', 0, $line);
    splice(@fields, $indexOfFieldToBeRemoved, 1);
    foreach (@fields) {
        print "\"$_\",";
    }
    print "\n";
}
close $fh;

抱歉,沒有比這更簡單的了(如果您無法按照建議重新生成csv dump)...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM