csv

CSVを名寄せして一行にまとめるperlスクリプト / perl script to aggregate csv records

  • Posted on: 12 May 2018
  • By: admin

名前をキーに、複数行のCSVデータを一行にまとめます。

入力ファイル

$ cat input.csv
上根来水源の森,水源の森百選
上山公園,全国森林浴の森百選
上山公園,日本の都市公園100選
上山公園,日本の歴史公園100選
城崎温泉,日本百名湯
城山公園,全国森林浴の森百選
城山公園,日本のさくら名所100選
城山公園,日本の都市公園100選
城山公園,日本の夕陽百選
城山公園,日本の歴史公園100選
城山公園,夜景100選
城山展望台,夜景100選

1フィールド目をキーにCSVを名寄せするperlスクリプト

Excel と cygwinコマンドラインで、文字化けなしにCSVファイルを作成する方法

  • Posted on: 12 May 2018
  • By: admin

EXCELでファイルをCSVにエクスポートすると文字化けすることが多く、メニューをクリックするアクションが多くて面倒です。コマンドラインで履歴を利用したほうが早く、文字化けもありません。

  • Excelで表部分のデータ選択とコピー。
    Ctrl-A、Ctrl-C

 

  • cygwinでファイルに標準入力をリダイレクト
$ cat > abc.csv

上記コマンドの後にEnterで改行、ペーストしてEnter、 最後にCtrl-D。

PerlでCSV形式データ作成・出力

  • Posted on: 12 May 2018
  • By: admin
#!/usr/bin/perl
use strict;

use Encode;
use Text::CSV_XS;

my @array_to_csv = (
  "Dr Dre",
  "50 Cent", 
  "Eminem",
  "Nelly",
  "Busta Rhymes"
);

my $csv = Text::CSV_XS->new();
$csv->combine(@array_to_csv);
print encode('utf-8',$csv->string()), "\n";

 

Tags: 

Drupal で郵便番号データを自動更新するための設定

10数万件ある郵便番号CSVデータを定期的に取得して、Drupalにインポートするための設定。

月末にデータ更新されているので、毎月5日にCSVを取得するようにOSのcronを設定し、月次のDrupal cronで1時間おきに500件ずつインポートして約10日で完了。

コンテンツタイプは作成済みの前提で、以下に設定を記述する。

Feeds設定

コマンドラインで先頭行にCSVヘッダーを追加するテクニック

ヘッダーなしのCSVファイル

$ cat pricelist.csv 
1,ココナッツ,200
2,いちご,300
3,ぶどう,500

CSVテキストファイルの先頭行に、ヘッダーを追加します。

$ sed -i '1iid,name,price' pricelist.csv
$ cat pricelist.csv
id,name,price
1,ココナッツ,200
2,いちご,300
3,ぶどう,500

catコマンドの場合。別ファイルの挿入などに便利です。

CSVコマンドラインツール csvkit

カンマや改行がデータに含まれているCSVファイルの場合、cutやsed,awkコマンドでは処理が困難なので、csvkitをインストールしておくと便利です。cygwin でも動作します。

 

インストール

$ sudo apt-get install python-dev python-pip python-setuptools build-essential
$ sudo pip install csvkit

インストール済みで、アップグレードする場合。

ページ