Le premier point important est que __ "CSV ne consiste pas seulement à lire un fichier et à le diviser ligne par ligne avec", "" __.
La RFC4180 est actuellement définie comme la spécification standard pour CSV.
http://www.kasai.fm/wiki/rfc4180jp http://www.ietf.org/rfc/rfc4180.txt
Cependant, il s'agit d'un suivi de celui publié en octobre 2005, et il est probable qu'il existe des différences par rapport à celles utilisées sur chaque site.
Les principales caractéristiques décrites dans cette spécification sont les suivantes.
・ Chaque enregistrement est séparé par un saut de ligne (CRLF) -Il peut y avoir ou non un saut de ligne à la fin de l'enregistrement à la fin du fichier. -La ligne d'en-tête peut exister ou non au début du fichier. -Chaque ligne et en-tête ont des champs séparés par des virgules. • Le nombre de champs doit être le même dans tout le fichier. -Le dernier champ ne doit pas se terminer par une virgule. -Chaque champ peut être ou non entre guillemets. -Les champs contenant des sauts de ligne doivent être placés entre guillemets. -Entrez les champs contenant des guillemets doubles entre guillemets doubles et ajoutez des guillemets avant les guillemets doubles dans le champ.
xxx,"test""test"
Un exemple de fonctionnement du CSV suivant dans chaque langage de programmation est présenté. Dans cet exemple, nous vérifierons comment le fichier CSV suivant peut être importé.
__test1.csv Exemple CSV commun __
test1.csv
Jack,12,guerrier,Explication 1
Brûler,17,Chevalier,Explication 2
Maam,15,Moine,Explication 3
__test2.csv Si la première ligne est un commentaire et que le champ contient des sauts de ligne, des guillemets doubles et des virgules __
test2.csv
#Nom,âge,classe,Dans l'explication(",)Mettre en
"Jack","12","guerrier",",Ou""Peut être entré"
"Brûler","17","Chevalier","Explication 2
Faites un saut de ligne"
"Maam","15","Moine","Explication 3"
__test3.csv Exemple où une ligne vide existe __
test3.csv
#Traitement des lignes blanches
"Jack","12","guerrier",",Ou""Peut être entré"
"Brûler","17","Chevalier","Explication 2
S'il y a un saut de ligne vide dans le guillemet double"
#Commentaires sur le chemin
"Maam","15","Moine","Explication 3"
__test4.csv Exemple où le nombre de colonnes dans chaque enregistrement est différent __
test4.csv
#Si le nombre de colonnes est différent
"Jack","12"
"Brûler"
"Maam","15","Moine","Explication 3"
Un exemple d'analyse utilisant TextField qui peut être utilisé en faisant référence à «Microsoft.VisualBasic» est illustré ci-dessous.
__CSV exemple de lecture __
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.VisualBasic.FileIO; //ajouter à
//C'est une spécification pour sauter les lignes vides
// 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(","); //Le délimiteur est une virgule
parser.CommentTokens = new string[1] {"#"};
int line = 0, col = 0;
while (!parser.EndOfData)
{
++line;
col = 0;
string[] row = parser.ReadFields(); //Lire une ligne
Console.WriteLine("{0}", line);
//L'élément de la ligne de tableau est la valeur de chaque champ dans la ligne de lecture
foreach (string field in row)
{
++col;
Console.WriteLine("{0}:{1}", col, field);
}
Console.WriteLine("----------------------------");
}
parser.Close();
}
}
}
Résultat d'exécution
C:\dev\csv\test1.csv================================
1
1:Jack
2:12
3:guerrier
4:Explication 1
----------------------------
2
1:Brûler
2:17
3:Chevalier
4:Explication 2
----------------------------
3
1:Maam
2:15
3:Moine
4:Explication 3
----------------------------
C:\dev\csv\test2.csv================================
1
1:Jack
2:12
3:guerrier
4:,Ou"Peut être entré
----------------------------
2
1:Brûler
2:17
3:Chevalier
4:Explication 2
Faites un saut de ligne
----------------------------
3
1:Maam
2:15
3:Moine
4:Explication 3
----------------------------
C:\dev\csv\test3.csv================================
1
1:Jack
2:12
3:guerrier
4:,Ou"Peut être entré
----------------------------
2
1:Brûler
2:17
3:Chevalier
4:Explication 2
S'il y a un saut de ligne vide dans le guillemet double
----------------------------
3
1:Maam
2:15
3:Moine
4:Explication 3
----------------------------
C:\dev\csv\test4.csv================================
1
1:Jack
2:12
----------------------------
2
1:Brûler
----------------------------
3
1:Maam
2:15
3:Moine
4:Explication 3
----------------------------
À partir de ce résultat, on peut dire ce qui suit comme l'opération de TextFieldParser. -Pas besoin d'installer une bibliothèque spéciale. -Les lignes de commentaire peuvent être spécifiées en définissant CommentTokens. ・ Sautez les lignes vides. Cela ne fait pas exception, même lors des doubles citations. Ce comportement est voulu par la conception. http://msdn.microsoft.com/ja-jp/library/microsoft.visualbasic.fileio.textfieldparser.readfields.aspx -Il n'y a pas de fonction pour créer CSV.
Si vous rencontrez un problème avec la spécification de sauter des lignes vides dans TextParser, ou si vous devez créer un CSV, utilisez CsvHelper.
https://github.com/JoshClose/CsvHelper
Téléchargez-le à partir de ce qui précède et créez-le vous-même, ou exécutez la commande suivante dans Package Manager.
Install-Package CsvHelper
La vérification ici a été effectuée avec .NET 3.5, mais la bibliothèque prend en charge .NET 2.0 à 4.5.
__CSV exemple de lecture __
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using CsvHelper;
// .NET3.Validé par 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();
}
}
}
Résultat d'exécution
C:\dev\csv\test1.csv================================
0:Jack
1:12
2:guerrier
3:Explication 1
----------------------------
0:Brûler
1:17
2:Chevalier
3:Explication 2
----------------------------
0:Maam
1:15
2:Moine
3:Explication 3
----------------------------
C:\dev\csv\test2.csv================================
0:Jack
1:12
2:guerrier
3:,Ou"Peut être entré
----------------------------
0:Brûler
1:17
2:Chevalier
3:Explication 2
Faites un saut de ligne
----------------------------
0:Maam
1:15
2:Moine
3:Explication 3
----------------------------
C:\dev\csv\test3.csv================================
0:Jack
1:12
2:guerrier
3:,Ou"Peut être entré
----------------------------
0:Brûler
1:17
2:Chevalier
3:Explication 2
S'il y a un saut de ligne vide dans le guillemet double
----------------------------
0:Maam
1:15
2:Moine
3:Explication 3
----------------------------
C:\dev\csv\test4.csv================================
0:Jack
1:12
----------------------------
0:Brûler
----------------------------
0:Maam
1:15
2:Moine
3:Explication 3
----------------------------
__CSV échantillon d'écriture __
var csv = new CsvWriter(new StreamWriter("C:\\dev\\csv\\out.csv", false, System.Text.Encoding.GetEncoding(932)));
csv.WriteField("Je suis Kagome");
csv.WriteField(12);
csv.WriteField(true);
csv.WriteField("\",Symboles tels que");
csv.NextRecord();
csv.WriteField("2e ligne");
csv.WriteField("Deux sauts de ligne\n\n mélanger");
csv.NextRecord();
csv.Dispose();
Fichier de sortie
Je suis Kagome,12,True,""",Symboles tels que"
2e ligne,"Deux sauts de ligne
Mélanger"
À partir de ce résultat, on peut dire ce qui suit comme le fonctionnement de CsvHelper. ・ Ne sautez pas même s'il y a une ligne vide. -Vous pouvez spécifier la présence ou l'absence de commentaires dans Configuration.AllowComments and Comments. -Vous pouvez spécifier s'il faut utiliser la première ligne comme en-tête dans Configuration.HasHeaderRecord. -Vous pouvez facilement créer un fichier CSV. -Bien que cela ne soit pas fait ici, vous pouvez également utiliser Mapping pour vous associer à un objet.
Excel peut ouvrir CSV, alors implémentons-le en utilisant cette fonction.
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
Résultat d'exécution
C:\\dev\\csv\\test1.csv==============================
1:Jack
2:12
3:guerrier
4:Explication 1
----------------------
1:Brûler
2:17
3:Chevalier
4:Explication 2
----------------------
1:Maam
2:15
3:Moine
4:Explication 3
----------------------
C:\\dev\\csv\\test2.csv==============================
1:#Nom
2:âge
3:classe
4:Dans l'explication("
5:)Mettre en
----------------------
1:Jack
2:12
3:guerrier
4:,Ou"Peut être entré
5:
----------------------
1:Brûler
2:17
3:Chevalier
4:Explication 2
Faites un saut de ligne
5:
----------------------
1:Maam
2:15
3:Moine
4:Explication 3
5:
----------------------
C:\\dev\\csv\\test3.csv==============================
1:#Traitement des lignes blanches
2:
3:
4:
----------------------
1:
2:
3:
4:
----------------------
1:Jack
2:12
3:guerrier
4:,Ou"Peut être entré
----------------------
1:Brûler
2:17
3:Chevalier
4:Explication 2
S'il y a un saut de ligne vide dans le guillemet double
----------------------
1:#Commentaires sur le chemin
2:
3:
4:
----------------------
1:Maam
2:15
3:Moine
4:Explication 3
----------------------
C:\\dev\\csv\\test4.csv==============================
1:#Si le nombre de colonnes est différent
2:
3:
4:
----------------------
1:
2:
3:
4:
----------------------
1:Jack
2:12
3:
4:
----------------------
1:Brûler
2:
3:
4:
----------------------
1:Maam
2:15
3:Moine
4:Explication 3
----------------------
À partir de là, lors de l'ouverture de CSV à l'aide d'Excel, ce qui suit peut être dit. -Les commentaires ne peuvent pas être contrôlés. -Depuis que CSV est ouvert dans la feuille sur Excel, l'opération de données peut être la même que Excel VBA normal. -Depuis qu'il est agrandi avec une feuille sur Excel, les performances seront inférieures à celles de l'accès aux données en mémoire.
Si vous faites référence à «Bibliothèque Microsoft ActiveX Data Objects x.x» dans les paramètres de référence, vous pouvez traiter CSV comme si vous travailliez avec une base de données.
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=Vous pouvez rendre l'en-tête inutile avec 0, mais cela ne fonctionne pas en raison d'un bogue.
' 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
Résultat d'exécution
test1.csv==============================
Brûler
17
Chevalier
Explication 2
-------------------------
Maam
15
Moine
Explication 3
-------------------------
test2.csv==============================
Jack
12
guerrier
,Ou"Peut être entré
Null
-------------------------
Brûler
17
Chevalier
Explication 2
Faites un saut de ligne
Null
-------------------------
Maam
15
Moine
Explication 3
Null
-------------------------
test3.csv==============================
Null
Null
Null
Null
-------------------------
Jack
12
guerrier
,Ou"Peut être entré
-------------------------
Brûler
17
Chevalier
Explication 2
S'il y a un saut de ligne vide dans le guillemet double
-------------------------
#Commentaires sur le chemin
Null
Null
Null
-------------------------
Maam
15
Moine
Explication 3
-------------------------
test4.csv==============================
Null
Null
Null
Null
-------------------------
Jack
12
Null
Null
-------------------------
Brûler
Null
Null
Null
-------------------------
Maam
15
Moine
Explication 3
-------------------------
À partir de ce résultat, on peut dire ce qui suit lors de l'utilisation d'ADO. -Peut gérer les fichiers CSV comme une base de données. -Les champs qui n'existent pas seront Null. ・ Les commentaires ne fonctionnent pas. -La première ligne est toujours traitée comme un en-tête. Et cela ne peut être évité en raison d'un bug. http://support.microsoft.com/kb/288343/ja http://support.microsoft.com/kb/257819/JA
Dans le cas de Python, il peut être supporté par le module csv inclus en standard. http://docs.python.jp/2/library/csv.html
__CSV lecture __
# -*- 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')
Résultat d'exécution
C:\dev\csv\test1.csv==============
Jack, 12,guerrier,Explication 1
Brûler, 17,Chevalier,Explication 2
Maam, 15,Moine,Explication 3
C:\dev\csv\test2.csv==============
#Nom,âge,classe,Dans l'explication(", )Mettre en
Jack, 12,guerrier, ,Ou"Peut être entré
Brûler, 17,Chevalier,Explication 2
Faites un saut de ligne
Maam, 15,Moine,Explication 3
C:\dev\csv\test3.csv==============
#Traitement des lignes blanches
Jack, 12,guerrier, ,Ou"Peut être entré
Brûler, 17,Chevalier,Explication 2
S'il y a un saut de ligne vide dans le guillemet double
#Commentaires sur le chemin
Maam, 15,Moine,Explication 3
C:\dev\csv\test4.csv==============
#Si le nombre de colonnes est différent
Jack, 12
Brûler
Maam, 15,Moine,Explication 3
__csv écrire __
writer = csv.writer(open('C:\\dev\\csv\\out.csv', 'wb'),quoting=csv.QUOTE_ALL)
writer.writerow(['test', 'Ah ah\nAh ah', 'symbole",'])
writer.writerow(['test'])
Résultat de sortie
"test","Ah ah
Ah ah","symbole"","
"test"
À partir des résultats ci-dessus, ce qui suit peut être dit lors de l'utilisation du module csv. ・ Les commentaires ne peuvent pas être traités. -Peut gérer les virgules, les sauts de ligne et les guillemets doubles lorsqu'ils sont placés entre guillemets. ・ CSV peut être créé facilement.
Dans le cas de Node.js, CSV peut être lu et écrit à l'aide de node-csv. Si vous utilisez également un code de caractère tel que cp932, utilisez également le module iconv.
__ Comment installer __
Installez node-csv
npm install csv
installation d'iconv
npm install iconv
__Exemple de lecture CSV __
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);
});
});
}
Résultat d'exécution
test1.csv================
null
[ [ 'Jack', '12', 'guerrier', 'Explication 1' ],
[ 'Brûler', '17', 'Chevalier', 'Explication 2' ],
[ 'Maam', '15', 'Moine', 'Explication 3' ] ]
test2.csv================
[Error: Invalid closing quote at line 1; found "le" instead of delimiter ","]
undefined
test3.csv================
null
[ [ 'Jack', '12', 'guerrier', ',Ou"Peut être entré' ],
[ 'Brûler', '17', 'Chevalier', 'Explication 2\r\n\r\n S'il y a un saut de ligne vide entre guillemets' ],
[ 'Maam', '15', 'Moine', 'Explication 3' ] ]
test4.csv================
null
[ [ 'Jack', '12' ], [ 'Brûler' ], [ 'Maam', '15', 'Moine', 'Explication 3' ] ]
Le résultat de la lecture de test2.csv est une erreur. csv.parse ne peut pas lire les données avec des guillemets doubles dans les commentaires comme suit.
#Nom,âge,classe,Dans l'explication(",)Mettre en
Pour résoudre ce problème, vous devez appliquer le correctif suivant à node_modules / csv / node_modules / csv-parse / lib / index.js.
--- 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;
Le résultat lorsque cela est appliqué est le suivant.
Résultat d'exécution
test2.csv================
null
[ [ 'Jack', '12', 'guerrier', ',Ou"Peut être entré' ],
[ 'Brûler', '17', 'Chevalier', 'Explication 2\r\n Faites un saut de ligne' ],
[ 'Maam', '15', 'Moine', 'Explication 3' ] ]
__Exemple d'écriture CSV __
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);
});
Chaîne de caractères créée
"xx","Ah ah","1"
"id","""atagfa,asteata","#teat","aaa"
"newline","tests
tesat"
À partir des résultats ci-dessus, ce qui suit peut être dit lorsque node-csv est utilisé.
-Vous pouvez lire et écrire CSV en utilisant node-csv. ・ Il est également possible de gérer les commentaires. -Cependant, comme il y a des bogues ou des spécifications autour des commentaires comme expliqué ci-dessus, créez et appliquez le correctif vous-même ou n'utilisez pas les commentaires.
Ici, nous examinerons comment concevoir le format du fichier CSV.
Il est souhaitable de spécifier le fichier d'en-tête afin que vous puissiez comprendre la signification des champs simplement en regardant le fichier CSV. Pour le moment, il vaut mieux le traiter comme un commentaire. J'ai regardé quelques bibliothèques, mais par défaut j'ai souvent commenté "#".
Un autre avantage de l'utilisation de CSV est qu'il est facile de modifier les données dans Excel. C'est un grand attrait de pouvoir créer facilement des données tant que vous pouvez utiliser Excel, et vous devez être prudent lorsque vous utilisez un format de données qui détruit ses mérites.
Ici, nous considérons une méthode d'expression des données de service, y compris les employés au format CSV, comme suit.
Le plus simple consiste à traiter les données du service et les données des employés comme des CSV distincts.
département.csv
#Nom du département,adresse de rue,numéro de téléphone
Ventes,Tokyo,12345
développement de,Osaka,34566
la gestion,Pays de rêve,44444
Employé.csv
#Nom de l'employé,Département d'affiliation,Date d'embauche,Email
Ailes du ciel,Ventes,1999/1/2,[email protected]
Taro Misaki,Ventes,1999/1/3,[email protected]
Joseph Joe Star,développement de,2000/1/1,[email protected]
Sorajo Shotaro,développement de,2000/1/3,[email protected]
Shimakosaku,la gestion,2003/1/1,[email protected]
L'inconvénient est que la relation parent-enfant des données est difficile à comprendre car les fichiers ne sont pas complètement séparés et liés.
Une autre façon de réfléchir à la façon de le gérer en tant que fichier séparé consiste à diviser le fichier de l'employé en départements et à les lier au département .csv.
Ventes.csv
#Nom du département,adresse de rue,numéro de téléphone,Dossier d'employé
Ventes,Tokyo,12345,Ventes社員.csv
développement de,Osaka,34566,développement de社員.csv
la gestion,Pays de rêve,44444,la gestion社員.csv
Employé de vente.csv
Ailes du ciel,1999/1/2,[email protected]
Taro Misaki,1999/1/3,[email protected]
Employé de développement.csv
Joseph Joe Star,2000/1/1,[email protected]
Sorajo Shotaro,2000/1/3,[email protected]
Employé de direction.csv
Shimakosaku,2003/1/1,[email protected]
Ce mérite est que le CSV du département du parent est lié au CSV de l'employé afin que la relation parent-enfant soit facile à comprendre, et comme il n'est pas nécessaire de décrire le nom du parent comme le nom du département dans chaque enregistrement, le nombre de fichiers augmente mais la capacité totale Peut être réduit.
Prenons le cas où les départements et les employés doivent être traités dans le même dossier.
Tout d'abord, examinez s'il est vraiment nécessaire de l'exprimer dans un fichier CSV. Si XML est correct, il existe un moyen de l'adopter, et si vous pouvez diviser le fichier en plusieurs parties, divisez-le.
Cependant, la modification de XML n'est pas aussi simple que CSV et il est un fait qu'il existe une demande pour combiner des fichiers en un seul, comme lors du téléchargement de fichiers sur un serveur. Ici, nous examinons comment combiner des données hiérarchiques en un seul fichier.
Dans ce cas, la spécification standard «le nombre de champs doit être le même dans tout le fichier» ne peut pas être satisfaite.
Spécifiez s'il s'agit de "service" ou "employé" avec le premier champ comme catégorie de données.
Employé du département.csv
département,Ventes,Tokyo,12345
département,développement de,Osaka,34566
département,la gestion,Pays de rêve,44444
Employé,Ailes du ciel,Ventes,1999/1/2,[email protected]
Employé,Taro Misaki,Ventes,1999/1/3,[email protected]
Employé,Joseph Joe Star,développement de,2000/1/1,[email protected]
Employé,Sorajo Shotaro,développement de,2000/1/3,[email protected]
Employé,Shimakosaku,la gestion,2003/1/1,[email protected]
Lorsque la quantité de données augmente réellement, on pense que les départements et les employés seront confus et difficiles à comprendre.
Stockez tous les employés dans une ligne de rayon. Préparez autant de champs qu'il y a d'employés sur le terrain après les informations du département. Incluez toutes les informations sur les employés dans un seul champ.
Employé du département.csv
Ventes,Tokyo,12345,"Ailes du ciel,1999/1/2,[email protected]","Taro Misaki,1999/1/3,[email protected]"
développement de,Osaka,34566,"Joseph Joe Star,2000/1/1,[email protected]","Sorajo Shotaro,2000/1/3,[email protected]"
la gestion,Pays de rêve,44444,"Shimakosaku,2003/1/1,[email protected]"
Cette méthode rend la saisie difficile pour l'utilisateur lors de la modification des données dans Excel. Par exemple, les adresses de service peuvent être facilement créées en copiant et collant des cellules, mais les adresses e-mail des utilisateurs ne peuvent pas être copiées et collées par cellules.
Stockez tous les employés dans une ligne de rayon À ce moment-là, le caractère de début et le caractère de fin sont définis afin que les données d'employé puissent être distinguées. Par exemple, si le champ contient les caractères «\ $ Sky Wings», on suppose que les données de l'employé: Sky Wings sont stockées jusqu'à ce que «\ $» apparaisse.
Employé du département.csv
Ventes,Tokyo,12345,$Ailes du ciel,1999/1/2,[email protected],$,$Taro Misaki,Ventes,1999/1/3,[email protected],$
développement de,Osaka,34566,$Joseph Joe Star,2000/1/1,[email protected],$,$Sorajo Shotaro,développement de,2000/1/3,[email protected],$
la gestion,Pays de rêve,44444,$Shimakosaku,2003/1/1,[email protected],$
La modification avec Excel est plus facile car la copie de cellule est activée. Cependant, il est nécessaire de déterminer des règles telles que la détermination des caractères spéciaux, et il est nécessaire de faire correspondre la connaissance avec le créateur de données.
Étant donné que chacun présente des avantages et des inconvénients, il est nécessaire de déterminer ce qu'il faut prioriser, notamment en supprimant CSV et en utilisant XML.
Recommended Posts