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"
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"
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.
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.
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.
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
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.
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.
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.
Hier betrachten wir eine Methode zum Ausdrücken von Abteilungsdaten einschließlich Mitarbeitern im CSV-Format wie folgt.
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.
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.
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.
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.
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.
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.
Da jedes Vor- und Nachteile hat, muss festgelegt werden, welche Prioritäten gesetzt werden sollen, einschließlich Verwerfen von CSV und Verwenden von XML.