Erläuterung der CSV und Implementierungsbeispiel in jeder Programmiersprache

CSV-Spezifikationen

Der erste wichtige Punkt ist, dass __ "Bei CSV geht es nicht nur darum, eine Datei zu lesen und sie einfach Zeile für Zeile mit", "" __ aufzuteilen.

RFC4180 ist derzeit als Standardspezifikation für CSV definiert.

http://www.kasai.fm/wiki/rfc4180jp http://www.ietf.org/rfc/rfc4180.txt

Dies ist jedoch eine Folge der Veröffentlichung im Oktober 2005, und es ist wahrscheinlich, dass es einige Unterschiede zu den an den einzelnen Standorten verwendeten gibt.

Die in dieser Spezifikation beschriebenen Hauptmerkmale sind wie folgt.

・ Jeder Datensatz ist durch einen Zeilenvorschub (CRLF) getrennt. -Das Ende des Datensatzes am Ende der Datei kann einen Zeilenumbruch aufweisen oder nicht. -Die Kopfzeile kann am Anfang der Datei vorhanden sein oder nicht. -Jede Zeile und Kopfzeile haben durch Kommas getrennte Felder. • Die Anzahl der Felder sollte in der gesamten Datei gleich sein. -Das letzte Feld darf nicht mit einem Komma enden. -Jedes Feld kann in doppelte Anführungszeichen gesetzt werden oder nicht. -Felder mit Zeilenumbrüchen sollten in doppelte Anführungszeichen gesetzt werden.

xxx,"test""test"

Implementierungsbeispiel in jeder Programmiersprache

Ein Beispiel für die Bedienung der folgenden CSV in jeder Programmiersprache wird gezeigt. In diesem Beispiel wird überprüft, wie die folgende CSV-Datei importiert werden kann.

__test1.csv Allgemeines CSV-Beispiel __

test1.csv


Jack,12,Krieger,Erklärung 1
Brennen,17,Ritter,Erklärung 2
Maam,15,Mönch,Erklärung 3

__test2.csv Wenn die erste Zeile ein Kommentar ist und das Feld Zeilenumbrüche, doppelte Anführungszeichen und Kommas enthält __

test2.csv


#Name,Alter,Klasse,In der Erklärung(",)Einstellen
"Jack","12","Krieger",",Oder""Kann eingegeben werden"
"Brennen","17","Ritter","Erklärung 2
Machen Sie einen Zeilenumbruch"
"Maam","15","Mönch","Erklärung 3"

__test3.csv Beispiel, in dem eine Leerzeile vorhanden ist __

test3.csv


#Behandlung von Leerzeilen

"Jack","12","Krieger",",Oder""Kann eingegeben werden"
"Brennen","17","Ritter","Erklärung 2

Wenn das doppelte Anführungszeichen einen leeren Zeilenumbruch enthält"
#Kommentare auf dem Weg
"Maam","15","Mönch","Erklärung 3"

__test4.csv Beispiel, bei dem die Anzahl der Spalten in jedem Datensatz unterschiedlich ist __

test4.csv


#Wenn die Anzahl der Spalten unterschiedlich ist

"Jack","12"
"Brennen"
"Maam","15","Mönch","Erklärung 3"

Implementierungsbeispiel in .NET (C #)

Beispiel für die Verwendung von TextFieldParser

Ein Beispiel für eine Analyse mit TextField, die unter Bezugnahme auf "Microsoft.VisualBasic" verwendet werden kann, ist unten dargestellt.

__CSV Lesebeispiel __

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.VisualBasic.FileIO;  //hinzufügen

//Es ist eine Spezifikation, Leerzeilen zu überspringen
// http://msdn.microsoft.com/ja-jp/library/microsoft.visualbasic.fileio.textfieldparser.readfields.aspx

namespace csvTest
{
    class Program
    {
        static void Main(string[] args)
        {
            dumpCsv("C:\\dev\\csv\\test1.csv");
            dumpCsv("C:\\dev\\csv\\test2.csv");
            dumpCsv("C:\\dev\\csv\\test3.csv");
            dumpCsv("C:\\dev\\csv\\test4.csv");

            Console.ReadLine();
        }

        static void dumpCsv(string file)
        {
            Console.WriteLine(file + "================================");
          
            TextFieldParser parser = new TextFieldParser(file,
                                                          System.Text.Encoding.GetEncoding("Shift_JIS"));
            parser.TextFieldType = FieldType.Delimited;
            parser.SetDelimiters(","); //Das Trennzeichen ist ein Komma
            parser.CommentTokens = new string[1] {"#"};
            int line = 0, col = 0;
            while (!parser.EndOfData)
            {
                ++line;
                col = 0;
                string[] row = parser.ReadFields(); //Lesen Sie eine Zeile
                Console.WriteLine("{0}", line);
                //Das Element der Array-Zeile ist der Wert jedes Felds in der gelesenen Zeile
                foreach (string field in row)
                {
                    ++col;
                    Console.WriteLine("{0}:{1}", col, field);
                }
                Console.WriteLine("----------------------------");
            }
            parser.Close();
        }
    }
}

Ausführungsergebnis


C:\dev\csv\test1.csv================================
1
1:Jack
2:12
3:Krieger
4:Erklärung 1
----------------------------
2
1:Brennen
2:17
3:Ritter
4:Erklärung 2
----------------------------
3
1:Maam
2:15
3:Mönch
4:Erklärung 3
----------------------------
C:\dev\csv\test2.csv================================
1
1:Jack
2:12
3:Krieger
4:,Oder"Kann eingegeben werden
----------------------------
2
1:Brennen
2:17
3:Ritter
4:Erklärung 2
Machen Sie einen Zeilenumbruch
----------------------------
3
1:Maam
2:15
3:Mönch
4:Erklärung 3
----------------------------
C:\dev\csv\test3.csv================================
1
1:Jack
2:12
3:Krieger
4:,Oder"Kann eingegeben werden
----------------------------
2
1:Brennen
2:17
3:Ritter
4:Erklärung 2
Wenn das doppelte Anführungszeichen einen leeren Zeilenumbruch enthält
----------------------------
3
1:Maam
2:15
3:Mönch
4:Erklärung 3
----------------------------
C:\dev\csv\test4.csv================================
1
1:Jack
2:12
----------------------------
2
1:Brennen
----------------------------
3
1:Maam
2:15
3:Mönch
4:Erklärung 3
----------------------------


Aus diesem Ergebnis kann Folgendes als Operation von TextFieldParser bezeichnet werden.

Beispiel für die Verwendung von CsvHelper

Wenn Sie ein Problem mit der Angabe haben, Leerzeilen in TextParser zu überspringen, oder wenn Sie eine CSV erstellen müssen, verwenden Sie CsvHelper.

https://github.com/JoshClose/CsvHelper

Laden Sie es von oben herunter und erstellen Sie es selbst oder führen Sie den folgenden Befehl im Paket-Manager aus.

Install-Package CsvHelper

Die Überprüfung hier wurde mit .NET 3.5 durchgeführt, aber die Bibliothek unterstützt .NET 2.0 bis 4.5.

__CSV Lesebeispiel __

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using CsvHelper;

// .NET3.Validiert durch 5
namespace csvTest
{
    class Program
    {
        static void Main(string[] args)
        {
            dumpCsv("C:\\dev\\csv\\test1.csv");
            dumpCsv("C:\\dev\\csv\\test2.csv");
            dumpCsv("C:\\dev\\csv\\test3.csv");
            dumpCsv("C:\\dev\\csv\\test4.csv");
            Console.Read();
        }

        static void dumpCsv(string file)
        {
            Console.WriteLine(file + "================================");
            var parser = new CsvReader(new StreamReader(file,
                                                        System.Text.Encoding.GetEncoding(932)));
            parser.Configuration.Encoding = System.Text.Encoding.GetEncoding(932);
            parser.Configuration.AllowComments = true;
            parser.Configuration.Comment = '#';
            parser.Configuration.HasHeaderRecord = false;

            while (parser.Read())
            {
                for (var i = 0; i < parser.CurrentRecord.Length; ++i)
                {
                    Console.WriteLine("{0}:{1}", i, parser.CurrentRecord.ElementAt(i));
                }
                Console.WriteLine("----------------------------");
            }
            parser.Dispose();
        }
    }
}

Ausführungsergebnis


C:\dev\csv\test1.csv================================
0:Jack
1:12
2:Krieger
3:Erklärung 1
----------------------------
0:Brennen
1:17
2:Ritter
3:Erklärung 2
----------------------------
0:Maam
1:15
2:Mönch
3:Erklärung 3
----------------------------
C:\dev\csv\test2.csv================================
0:Jack
1:12
2:Krieger
3:,Oder"Kann eingegeben werden
----------------------------
0:Brennen
1:17
2:Ritter
3:Erklärung 2
Machen Sie einen Zeilenumbruch
----------------------------
0:Maam
1:15
2:Mönch
3:Erklärung 3
----------------------------
C:\dev\csv\test3.csv================================
0:Jack
1:12
2:Krieger
3:,Oder"Kann eingegeben werden
----------------------------
0:Brennen
1:17
2:Ritter
3:Erklärung 2

Wenn das doppelte Anführungszeichen einen leeren Zeilenumbruch enthält
----------------------------
0:Maam
1:15
2:Mönch
3:Erklärung 3
----------------------------
C:\dev\csv\test4.csv================================
0:Jack
1:12
----------------------------
0:Brennen
----------------------------
0:Maam
1:15
2:Mönch
3:Erklärung 3
----------------------------



__CSV Schreibprobe __

            var csv = new CsvWriter(new StreamWriter("C:\\dev\\csv\\out.csv", false, System.Text.Encoding.GetEncoding(932)));
            csv.WriteField("Ich bin Kagome");
            csv.WriteField(12);
            csv.WriteField(true);
            csv.WriteField("\",Symbole wie");
            csv.NextRecord();

            csv.WriteField("2. Zeile");
            csv.WriteField("Zwei Zeilenumbrüche\n\n mischen");
            csv.NextRecord();

            csv.Dispose();

Ausgabedatei


Ich bin Kagome,12,True,""",Symbole wie"
2. Zeile,"Zwei Zeilenumbrüche

Mischen"

Aus diesem Ergebnis kann das Folgende als die Operation von CsvHelper bezeichnet werden. ・ Überspringen Sie nicht, auch wenn eine Leerzeile vorhanden ist. -Sie können das Vorhandensein oder Fehlen von Kommentaren in Configuration.AllowComments and Comments angeben. -Sie können in Configuration.HasHeaderRecord angeben, ob die erste Zeile als Kopfzeile verwendet werden soll. -Sie können einfach eine CSV-Datei erstellen.

Implementierungsbeispiel in Excel VBA

So öffnen Sie CSV mit Excel

Excel kann CSV öffnen, also implementieren wir es mit dieser Funktion.

Public Sub test()
    Call DumpCsv("C:\\dev\\csv\\test1.csv")
    Call DumpCsv("C:\\dev\\csv\\test2.csv")
    Call DumpCsv("C:\\dev\\csv\\test3.csv")
    Call DumpCsv("C:\\dev\\csv\\test4.csv")
End Sub

Private Sub DumpCsv(ByVal path As String)
    Debug.Print path & "=============================="
    Dim wkb As Workbook
    Dim wks As Worksheet
    Application.ScreenUpdating = False
    Set wkb = Application.Workbooks.Open(path)
    Application.Windows(wkb.Name).Visible = False
    Set wks = wkb.Sheets(1)
    
    Dim r As Long
    Dim c As Long
    Dim maxRow As Long
    Dim maxCol As Long
    maxRow = wks.Cells(1, 1).SpecialCells(xlLastCell).Row
    maxCol = wks.Cells(1, 1).SpecialCells(xlLastCell).Column
    For r = 1 To maxRow
        For c = 1 To maxCol
            Debug.Print c & ":" & wks.Cells(r, c).Value
        Next c
        Debug.Print "----------------------"
    Next r
    
    Call wkb.Close(False)
    Application.ScreenUpdating = True
End Sub

Ausführungsergebnis


C:\\dev\\csv\\test1.csv==============================
1:Jack
2:12
3:Krieger
4:Erklärung 1
----------------------
1:Brennen
2:17
3:Ritter
4:Erklärung 2
----------------------
1:Maam
2:15
3:Mönch
4:Erklärung 3
----------------------
C:\\dev\\csv\\test2.csv==============================
1:#Name
2:Alter
3:Klasse
4:In der Erklärung("
5:)Einstellen
----------------------
1:Jack
2:12
3:Krieger
4:,Oder"Kann eingegeben werden
5:
----------------------
1:Brennen
2:17
3:Ritter
4:Erklärung 2
Machen Sie einen Zeilenumbruch
5:
----------------------
1:Maam
2:15
3:Mönch
4:Erklärung 3
5:
----------------------
C:\\dev\\csv\\test3.csv==============================
1:#Behandlung von Leerzeilen
2:
3:
4:
----------------------
1:
2:
3:
4:
----------------------
1:Jack
2:12
3:Krieger
4:,Oder"Kann eingegeben werden
----------------------
1:Brennen
2:17
3:Ritter
4:Erklärung 2

Wenn das doppelte Anführungszeichen einen leeren Zeilenumbruch enthält
----------------------
1:#Kommentare auf dem Weg
2:
3:
4:
----------------------
1:Maam
2:15
3:Mönch
4:Erklärung 3
----------------------
C:\\dev\\csv\\test4.csv==============================
1:#Wenn die Anzahl der Spalten unterschiedlich ist
2:
3:
4:
----------------------
1:
2:
3:
4:
----------------------
1:Jack
2:12
3:
4:
----------------------
1:Brennen
2:
3:
4:
----------------------
1:Maam
2:15
3:Mönch
4:Erklärung 3
----------------------

Wenn Sie CSV mit Excel öffnen, können Sie Folgendes sagen. -Kommentare können nicht kontrolliert werden.

Bei Verwendung von ADO

Wenn Sie in den Referenzeinstellungen auf "Microsoft ActiveX Data Objects x.x-Bibliothek" verweisen, können Sie CSV so behandeln, als würden Sie eine Datenbank betreiben.

Public Sub tstAdo()
    Call DumpCsvByADO("test1.csv")
    Call DumpCsvByADO("test2.csv")
    Call DumpCsvByADO("test3.csv")
    Call DumpCsvByADO("test4.csv")
    
End Sub
Private Sub DumpCsvByADO(ByVal path As String)
    Dim cnn As ADODB.Connection
    Set cnn = New ADODB.Connection
    cnn.Open ("Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
                 "DBQ=C:\dev\csv\;" & _
                 "FirstRowHasNames=0;")
    Dim rs As ADODB.Recordset
    'FirstRowHasNames=Sie können den Header mit 0 unnötig machen, aber er funktioniert aufgrund eines Fehlers nicht.
    ' http://support.microsoft.com/kb/288343/ja
    'http://support.microsoft.com/kb/257819/JA
    Dim i As Long
    Set rs = cnn.Execute("SELECT * FROM " & path)
    Debug.Print path & "=============================="
    Do While Not rs.EOF
        For i = 0 To rs.Fields.Count - 1
            Debug.Print rs.Fields(i).Value
        Next i
        Debug.Print "-------------------------"
        rs.MoveNext
    Loop
    rs.Close
    cnn.Close
    
    Set cnn = Nothing
    Set rs = Nothing
End Sub

Ausführungsergebnis


test1.csv==============================
Brennen
 17 
Ritter
Erklärung 2
-------------------------
Maam
 15 
Mönch
Erklärung 3
-------------------------
test2.csv==============================
Jack
12
Krieger
,Oder"Kann eingegeben werden
Null
-------------------------
Brennen
17
Ritter
Erklärung 2
Machen Sie einen Zeilenumbruch
Null
-------------------------
Maam
15
Mönch
Erklärung 3
Null
-------------------------
test3.csv==============================
Null
Null
Null
Null
-------------------------
Jack
12
Krieger
,Oder"Kann eingegeben werden
-------------------------
Brennen
17
Ritter
Erklärung 2

Wenn das doppelte Anführungszeichen einen leeren Zeilenumbruch enthält
-------------------------
#Kommentare auf dem Weg
Null
Null
Null
-------------------------
Maam
15
Mönch
Erklärung 3
-------------------------
test4.csv==============================
Null
Null
Null
Null
-------------------------
Jack
12
Null
Null
-------------------------
Brennen
Null
Null
Null
-------------------------
Maam
15
Mönch
Erklärung 3
-------------------------

Aus diesem Ergebnis kann bei Verwendung von ADO Folgendes gesagt werden. -Kann CSV-Dateien wie eine Datenbank behandeln. -Felder, die nicht existieren, sind Null. ・ Kommentare funktionieren nicht. -Die erste Zeile wird immer als Kopfzeile behandelt. Und dies kann aufgrund eines Fehlers nicht vermieden werden.  http://support.microsoft.com/kb/288343/ja  http://support.microsoft.com/kb/257819/JA

Beispiel für eine Python-Implementierung

CSV-Modul

Im Fall von Python kann es von dem standardmäßig enthaltenen CSV-Modul unterstützt werden. http://docs.python.jp/2/library/csv.html

__CSV Lesung __

# -*- coding: utf-8 -*-
import csv

def dumpCsv(path):
    print ('%s==============' % path)
    reader = csv.reader(open(path,'rb'))
    for row in reader:
        print (', '.join(row))


dumpCsv('C:\\dev\\csv\\test1.csv')
dumpCsv('C:\\dev\\csv\\test2.csv')
dumpCsv('C:\\dev\\csv\\test3.csv')
dumpCsv('C:\\dev\\csv\\test4.csv')

Ausführungsergebnis


C:\dev\csv\test1.csv==============
Jack, 12,Krieger,Erklärung 1
Brennen, 17,Ritter,Erklärung 2
Maam, 15,Mönch,Erklärung 3
C:\dev\csv\test2.csv==============
#Name,Alter,Klasse,In der Erklärung(", )Einstellen
Jack, 12,Krieger, ,Oder"Kann eingegeben werden
Brennen, 17,Ritter,Erklärung 2
Machen Sie einen Zeilenumbruch
Maam, 15,Mönch,Erklärung 3
C:\dev\csv\test3.csv==============
#Behandlung von Leerzeilen

Jack, 12,Krieger, ,Oder"Kann eingegeben werden
Brennen, 17,Ritter,Erklärung 2

Wenn das doppelte Anführungszeichen einen leeren Zeilenumbruch enthält
#Kommentare auf dem Weg
Maam, 15,Mönch,Erklärung 3
C:\dev\csv\test4.csv==============
#Wenn die Anzahl der Spalten unterschiedlich ist

Jack, 12
Brennen
Maam, 15,Mönch,Erklärung 3

__csv schreiben __

writer = csv.writer(open('C:\\dev\\csv\\out.csv', 'wb'),quoting=csv.QUOTE_ALL)
writer.writerow(['test', 'ah ah\nah ah', 'Symbol",'])
writer.writerow(['test'])

Ausgabeergebnis


"test","ah ah
ah ah","Symbol"","
"test"

Aus den obigen Ergebnissen kann bei Verwendung des CSV-Moduls Folgendes gesagt werden. ・ Kommentare können nicht verarbeitet werden. -Kann Kommas, Zeilenumbrüche und doppelte Anführungszeichen verarbeiten, wenn sie in doppelte Anführungszeichen eingeschlossen sind. ・ CSV kann einfach erstellt werden.

Implementierungsbeispiel für Node.js.

Ein Beispiel für die Verwendung von Node-CSV.

Im Fall von Node.js kann CSV mithilfe von node-csv gelesen und geschrieben werden. Wenn Sie auch einen Zeichencode wie cp932 verwenden, verwenden Sie auch das iconv-Modul.

__ Wie installiert man __

Installieren Sie node-csv

npm install csv

Installation von iconv

npm install iconv

__CSV Lesebeispiel __

var csv = require('csv');
var fs = require('fs');
var Iconv = require('iconv').Iconv;
var conv = new Iconv('cp932','utf-8');
dumpCsv('test1.csv');
dumpCsv('test2.csv');
dumpCsv('test3.csv');
dumpCsv('test4.csv');

function dumpCsv(path) {
  fs.readFile(path, function(err, sjisBuf) {
    var buf = conv.convert(sjisBuf);
    console.log(path + '================');
    csv.parse(buf.toString(),{comment:'#'}, function(err, data) {
      console.log(err);
      console.log(data);
    });
  });
}

Ausführungsergebnis


test1.csv================
null
[ [ 'Jack', '12', 'Krieger', 'Erklärung 1' ],
  [ 'Brennen', '17', 'Ritter', 'Erklärung 2' ],
  [ 'Maam', '15', 'Mönch', 'Erklärung 3' ] ]
test2.csv================
[Error: Invalid closing quote at line 1; found "Das" instead of delimiter ","]
undefined
test3.csv================
null
[ [ 'Jack', '12', 'Krieger', ',Oder"Kann eingegeben werden' ],
  [ 'Brennen', '17', 'Ritter', 'Erklärung 2\r\n\r\n Wenn ein doppelter Zeilenumbruch in doppelten Anführungszeichen steht' ],
  [ 'Maam', '15', 'Mönch', 'Erklärung 3' ] ]
test4.csv================
null
[ [ 'Jack', '12' ], [ 'Brennen' ], [ 'Maam', '15', 'Mönch', 'Erklärung 3' ] ]

Das Leseergebnis von test2.csv ist ein Fehler. csv.parse kann keine Daten mit doppelten Anführungszeichen in Kommentaren wie folgt lesen.

#Name,Alter,Klasse,In der Erklärung(",)Einstellen

Um dies zu beheben, müssen Sie den folgenden Patch auf node_modules / csv / node_modules / csv-parse / lib / index.js anwenden.

--- node_modules/csv/node_modules/csv-parse/lib/index_bk.js	2014-06-20 17:36:56.000000000 +0900
+++ node_modules/csv/node_modules/csv-parse/lib/index.js	2014-07-22 22:06:12.826116745 +0900
@@ -253,7 +253,7 @@
         this.closingQuote = i;
         i++;
         continue;
-      } else if (!this.field) {
+      } else if (!this.field && !this.commenting) {
         this.quoting = true;
         i++;
         continue;

Das Ergebnis, wenn dies angewendet wird, ist wie folgt.

Ausführungsergebnis


test2.csv================
null
[ [ 'Jack', '12', 'Krieger', ',Oder"Kann eingegeben werden' ],
  [ 'Brennen', '17', 'Ritter', 'Erklärung 2\r\n Machen Sie einen Zeilenumbruch' ],
  [ 'Maam', '15', 'Mönch', 'Erklärung 3' ] ]

__CSV Schreibbeispiel __

var csv = require('csv')
var data = [
  ['xx', 'ah ah', 1],
  ['id', '"atagfa,asteata','#teat','aaa'],
  ['newline', 'tests\n\ntesat']
];
console.log(data);
csv.stringify(data, {quoted: true}, function(err, output) {
  console.log(err);
  console.log(output);
});

Zeichenkette erstellt


"xx","ah ah","1"
"id","""atagfa,asteata","#teat","aaa"
"newline","tests

tesat"

Aus den obigen Ergebnissen kann Folgendes gesagt werden, wenn node-csv verwendet wird.

-Sie können CSV mit node-csv lesen und schreiben. ・ Es ist auch möglich, Kommentare zu bearbeiten.

Berücksichtigung des CSV-Designs

Hier werden wir uns überlegen, wie das Format der CSV-Datei gestaltet wird.

Es ist wünschenswert, die Header-Datei anzugeben, damit Sie die Bedeutung der Felder anhand der CSV-Datei verstehen können. Zu diesem Zeitpunkt ist es besser, es als Kommentar zu behandeln. Ich habe mir einige Bibliotheken angesehen, aber standardmäßig habe ich oft "#" kommentiert.

Ein weiterer Vorteil der Verwendung von CSV besteht darin, dass Daten in Excel einfach bearbeitet werden können. Es ist eine große Attraktion, Daten einfach erstellen zu können, solange Sie Excel verwenden können, und Sie müssen vorsichtig sein, wenn Sie ein Datenformat verwenden, das seine Vorzüge zerstört.

Hierarchische Datendarstellung

Hier betrachten wir eine Methode zum Ausdrücken von Abteilungsdaten einschließlich Mitarbeitern im CSV-Format wie folgt. 無題.png

Als separate Datei behandeln

Aufteilen in eine übergeordnete und eine untergeordnete Datei

Am einfachsten ist es, Abteilungs- und Mitarbeiterdaten als separate CSVs zu behandeln.

Abteilung.csv


#Abteilungsname,Adresse,Telefonnummer
Der Umsatz,Tokio,12345
Entwicklung von,Osaka,34566
Management,Traumland,44444

Mitarbeiter.csv


#Mitarbeitername,Abteilung,Anstellungsdatum,Email
Himmelsflügel,Der Umsatz,1999/1/2,[email protected]
Taro Misaki,Der Umsatz,1999/1/3,[email protected]
Joseph Joe Star,Entwicklung von,2000/1/1,[email protected]
Sorajo Shotaro,Entwicklung von,2000/1/3,[email protected]
Shimakosaku,Management,2003/1/1,[email protected]

Der Nachteil ist, dass die Eltern-Kind-Beziehung der Daten schwer zu verstehen ist, da die Dateien nicht vollständig getrennt und verknüpft sind.

Planen Sie, mehrere Dateien für Kinder vorzubereiten

Eine andere Möglichkeit, darüber nachzudenken, wie es als separate Datei behandelt werden soll, besteht darin, die Datei des Mitarbeiters in Abteilungen aufzuteilen und sie mit der Abteilung .csv zu verknüpfen.

Der Umsatz.csv


#Abteilungsname,Adresse,Telefonnummer,Mitarbeiterdatei
Der Umsatz,Tokio,12345,Der Umsatz社員.csv
Entwicklung von,Osaka,34566,Entwicklung von社員.csv
Management,Traumland,44444,Management社員.csv

Verkaufsangestellter.csv


Himmelsflügel,1999/1/2,[email protected]
Taro Misaki,1999/1/3,[email protected]

Entwicklungsmitarbeiter.csv


Joseph Joe Star,2000/1/1,[email protected]
Sorajo Shotaro,2000/1/3,[email protected]

Management-Mitarbeiter.csv


Shimakosaku,2003/1/1,[email protected]

Dies hat den Vorteil, dass die CSV der Elternabteilung mit der CSV des Mitarbeiters verknüpft ist, sodass die Eltern-Kind-Beziehung leicht zu verstehen ist. Da der Name des Elternteils nicht in jedem Datensatz als Abteilungsname beschrieben werden muss, erhöht sich die Anzahl der Dateien, aber die Gesamtkapazität Kann reduziert werden.

Als eine Datei behandeln

Stellen Sie sich den Fall vor, in dem Abteilungen und Mitarbeiter in derselben Datei behandelt werden müssen.

Überlegen Sie zunächst, ob es wirklich notwendig ist, es in einer CSV-Datei auszudrücken. Wenn XML in Ordnung ist, gibt es eine Möglichkeit, es zu übernehmen. Wenn es in Ordnung ist, die Datei in mehrere Teile zu teilen, teilen Sie sie.

Das Bearbeiten von XML ist jedoch nicht so einfach wie das von CSV, und es besteht die Notwendigkeit, Dateien zu einer zu kombinieren, beispielsweise beim Hochladen von Dateien auf einen Server. Hier betrachten wir, wie hierarchische Daten in einer Datei kombiniert werden.

In diesem Fall kann die Standardspezifikation "Die Anzahl der Felder sollte in der gesamten Datei gleich sein" nicht erfüllt werden.

Klassifizieren Sie die Daten in der ersten Spalte

Geben Sie an, ob es sich um "Abteilung" oder "Mitarbeiter" handelt, wobei das erste Feld als Datenkategorie dient.

Abteilungsmitarbeiter.csv


Abteilung,Der Umsatz,Tokio,12345
Abteilung,Entwicklung von,Osaka,34566
Abteilung,Management,Traumland,44444
Mitarbeiter,Himmelsflügel,Der Umsatz,1999/1/2,[email protected]
Mitarbeiter,Taro Misaki,Der Umsatz,1999/1/3,[email protected]
Mitarbeiter,Joseph Joe Star,Entwicklung von,2000/1/1,[email protected]
Mitarbeiter,Sorajo Shotaro,Entwicklung von,2000/1/3,[email protected]
Mitarbeiter,Shimakosaku,Management,2003/1/1,[email protected]

Wenn die Datenmenge tatsächlich zunimmt, wird angenommen, dass Abteilungen und Mitarbeiter verwirrt und schwer zu verstehen sind.

Fügen Sie alle untergeordneten Informationen in ein Feld ein

Speichern Sie alle Mitarbeiter in einer Abteilungslinie. Bereiten Sie nach den Abteilungsinformationen so viele Felder vor, wie Mitarbeiter im Feld sind. Fügen Sie alle Mitarbeiterinformationen in ein Feld ein.

Abteilungsmitarbeiter.csv


Der Umsatz,Tokio,12345,"Himmelsflügel,1999/1/2,[email protected]","Taro Misaki,1999/1/3,[email protected]"
Entwicklung von,Osaka,34566,"Joseph Joe Star,2000/1/1,[email protected]","Sorajo Shotaro,2000/1/3,[email protected]"
Management,Traumland,44444,"Shimakosaku,2003/1/1,[email protected]"

Diese Methode erschwert dem Benutzer die Eingabe beim Bearbeiten von Daten in Excel. Beispielsweise können Abteilungsadressen einfach durch Kopieren und Einfügen von Zellen erstellt werden, Benutzer-E-Mail-Adressen können jedoch nicht von Zellen kopiert und eingefügt werden.

Trennen Sie untergeordnete Daten mit Sonderzeichen

Speichern Sie alle Mitarbeiter in einer Abteilungslinie Zu diesem Zeitpunkt werden das Startzeichen und das Endzeichen so festgelegt, dass die Mitarbeiterdaten unterschieden werden können. Wenn das Feld beispielsweise die Zeichen "\ $ Sky Wings" enthält, wird davon ausgegangen, dass die Daten des Mitarbeiters: Sky Wings gespeichert werden, bis "\ $" angezeigt wird.

Abteilungsmitarbeiter.csv


Der Umsatz,Tokio,12345,$Himmelsflügel,1999/1/2,[email protected],$,$Taro Misaki,Der Umsatz,1999/1/3,[email protected],$
Entwicklung von,Osaka,34566,$Joseph Joe Star,2000/1/1,[email protected],$,$Sorajo Shotaro,Entwicklung von,2000/1/3,[email protected],$
Management,Traumland,44444,$Shimakosaku,2003/1/1,[email protected],$

Das Bearbeiten mit Excel ist einfacher, da das Kopieren von Zellen aktiviert ist. Es ist jedoch erforderlich, Regeln wie das Bestimmen von Sonderzeichen festzulegen, und es ist erforderlich, die Bekanntheit mit dem Datenersteller abzugleichen.

Zusammenfassung der hierarchischen Daten

Da jedes Vor- und Nachteile hat, muss festgelegt werden, welche Prioritäten gesetzt werden sollen, einschließlich Verwerfen von CSV und Verwenden von XML.

Recommended Posts

Erläuterung der CSV und Implementierungsbeispiel in jeder Programmiersprache
Erläuterung der Bearbeitungsentfernung und Implementierung in Python
Erklärung und Implementierung von SocialFoceModel
Erläuterung und Implementierung von PRML Kapitel 4
Erklärung und Implementierung des ESIM-Algorithmus
Erklärung und Implementierung von einfachem Perzeptron
Erklärung und Implementierung des Decomposable Attention-Algorithmus
Verarbeitung von CSV-Daten in voller und halber Breite in Python
Japan kann in Bezug auf die Programmiersprache Galapagos sein
Arten der Vorverarbeitung in der Verarbeitung natürlicher Sprache und ihre Leistungsfähigkeit
Implementierung der schnellen Sortierung in Python
Koordination jedes Prozesses im MPI und Pufferung der Standardausgabe
Mathematische Erklärung der Dichotomie- und Trisektionssuch- und Implementierungsmethode ohne Fehler
Liste der in Python verfügbaren Löser und Modellierer für lineares Design (LP)
Überlegen Sie ernsthaft, welche Sprache in der Programmierausbildung und in der Programmierausbildung verwendet werden soll.
Einführung und Implementierung der Aktivierungsfunktion
Sortieralgorithmus und Implementierung in Python
Implementierung eines Lebensspiels in Python
Erste Schritte mit SQLite in einer Programmiersprache
Richtlinien für die Reinkarnation in der Welt der Linux-Programmierentwicklung (C / C ++ - Sprache)
Maximale Anzahl von Funktionsparametern, die in jeder Sprache definiert werden können
Implementierung des Partikelfilters durch Python und Anwendung auf das Zustandsraummodell
Implementieren Sie ein Modell mit Status und Verhalten (3) - Beispiel für die Implementierung durch den Dekorateur
Die gefragteste Programmiersprache im Jahr 2020
Antworten und Eindrücke von 100 Sprachverarbeitungsklopfen - Teil 1
Beispiel für die Verwendung von Klassenvariablen und Klassenmethoden
Es ist eine Implementierung von ConnectionPool in redis.py
Was für eine Programmiersprache ist Python?
Screenshots des Webfischens mit Selen und Chrom.
Trennung von Design und Daten in matplotlib
Zusammenfassung der Module und Klassen in Python-TensorFlow2-
Praktisches Beispiel für hexagonale Architektur in Python
Status jedes Python-Verarbeitungssystems im Jahr 2020
Projekt Euler # 1 "Vielfaches von 3 und 5" in Python
Unterschiede im Verhalten jeder LL-Sprache, wenn der Listenindex übersprungen wird
Python: Deep Learning in der Verarbeitung natürlicher Sprache: Implementierung eines Antwortsatzauswahlsystems