Foondump 5.15 delimiters en lege regels

Hallo allemaal,

Twee puntjes bij het dumpen van CD Foongids 2007 met foondump 5.15:

1. Pipe characters
Gezien het groeiend aantal pipe (|) karakakters dat in de cdfoon gids entries voorkomt, is het denk ik handig om over te stappen op een andere delimiter.
Een tab-delimiter zou denk ik heel goed werken.
Onder aan mijn entry een opsomming van de embedded pipe karakters die nu voorkomen.

2. Blanko regels
Ook komt het zowel in pink_info.txt als in white_info.txt dat er blanko regels staan. Zie ook onder aan dit bericht.

Verder ben ik bezig met een tool die de foondump naar Interbase kan importeren (wellicht dat het ook met FireBird werkt, moet ik nog een keer een VM voor maken). Ik moet even kijken of ik dit publiek mag maken, en zo ja of daar ook sourcecode bij mag. Daar horen jullie meer over.

Dit is de dump van mijn import, inclusief de fouten:

starting.

GEO_POSTALCOORDS
PINK_CATEGORY
PINK_INFO
PINK_PHONENUMBER
PINK_SUBSCRIBER
WHITE_CATEGORY
WHITE_INFO
WHITE_PHONENUMBER
WHITE_SUBSCRIBER

geo_postalcoords.txt

insert into GEO_POSTALCOORDS (POSTCODE,X,Y,LONGITUDE,LATITUDE) values (:POSTCODE,:X,:Y,:LONGITUDE,:LATITUDE)

POSTCODE, ParamType:ptInput, DataType:ftString
X, ParamType:ptInput, DataType:ftFMTBcd
Y, ParamType:ptInput, DataType:ftFMTBcd
LONGITUDE, ParamType:ptInput, DataType:ftFMTBcd
LATITUDE, ParamType:ptInput, DataType:ftFMTBcd

pink_category.txt

insert into PINK_CATEGORY (CATEGORY,DESCRIPTION) values (:CATEGORY,:DESCRIPTION)

CATEGORY, ParamType:ptInput, DataType:ftString
DESCRIPTION, ParamType:ptInput, DataType:ftString

pink_info.txt

insert into PINK_INFO (ID,ID_SEQUENCE,TAG,INFO) values (:ID,:ID_SEQUENCE,:TAG,:INFO)

ID, ParamType:ptInput, DataType:ftInteger
ID_SEQUENCE, ParamType:ptInput, DataType:ftInteger
TAG, ParamType:ptInput, DataType:ftInteger
INFO, ParamType:ptInput, DataType:ftString

—> Lege regel na deze entry in de .TXT file Param 3:INFO=“CC_LINE$> > > Leverancier van Tijdelijke Beveiliging < < <”
—> Lege regel na deze entry in de .TXT file Param 3:INFO=“CC_LINE$> > > Smaakmakende Catering < < <”

Warning: 5 > 4 (Splitter.Count > InsertQuery.Params.Count) Embedded | in record "140746|3|53|CC_LINE$RESEARCH & CONSULTANCY | BELEGGINGEN"
Warning: 5 > 4 (Splitter.Count > InsertQuery.Params.Count) Embedded | in record "631707|2|53|CC_LINE$keuring NEN3140 | NEN-EN50110-1"
Warning: 7 > 4 (Splitter.Count > InsertQuery.Params.Count) Embedded | in record "689641|2|53|CC_LINE$Siergrind | Marmergrind | Beton design |"
Warning: 5 > 4 (Splitter.Count > InsertQuery.Params.Count) Embedded | in record "689641|3|53|CC_LINE$Gietvloer | Pandomo"
Warning: 6 > 4 (Splitter.Count > InsertQuery.Params.Count) Embedded | in record “720896|2|53|CC_LINE$Consultancy |Training | Boekhoudpakketten”

pink_phonenumber.txt

insert into PINK_PHONENUMBER (ID,PHONENUMBER) values (:ID,:PHONENUMBER)

ID, ParamType:ptInput, DataType:ftInteger
PHONENUMBER, ParamType:ptInput, DataType:ftString

pink_subscriber.txt

insert into PINK_SUBSCRIBER (ID,LASTNAME,STREET,HOUSENUMBER,POSTCODE,CITY,PHONENUMBER,CATEGORY) values (:ID,:LASTNAME,:STREET,:HOUSENUMBER,:POSTCODE,:CITY,:PHONENUMBER,:CATEGORY)

ID, ParamType:ptInput, DataType:ftInteger
LASTNAME, ParamType:ptInput, DataType:ftString
STREET, ParamType:ptInput, DataType:ftString
HOUSENUMBER, ParamType:ptInput, DataType:ftString
POSTCODE, ParamType:ptInput, DataType:ftString
CITY, ParamType:ptInput, DataType:ftString
PHONENUMBER, ParamType:ptInput, DataType:ftString
CATEGORY, ParamType:ptInput, DataType:ftString

Warning: 9 > 8 (Splitter.Count > InsertQuery.Params.Count) Embedded | in record "171023|DIJKSTRA|SUTTER NETWERK NOTARISSEN|Newtonbaan|16|3439NK|Nieuwegein|0306038129|NOT05"
Warning: 9 > 8 (Splitter.Count > InsertQuery.Params.Count) Embedded | in record "256511|Grontmij|Technical Management|Stationsplein|12|9401LB|Assen|0592338877|ADV04"
Warning: 9 > 8 (Splitter.Count > InsertQuery.Params.Count) Embedded | in record “256512|Grontmij|Technical Management|Stationsplein|12|9401LB|Assen|0592338877|ING05”

white_category.txt

insert into WHITE_CATEGORY (CATEGORY,DESCRIPTION) values (:CATEGORY,:DESCRIPTION)

CATEGORY, ParamType:ptInput, DataType:ftString
DESCRIPTION, ParamType:ptInput, DataType:ftString

white_info.txt

insert into WHITE_INFO (ID,ID_SEQUENCE,TAG,INFO) values (:ID,:ID_SEQUENCE,:TAG,:INFO)

ID, ParamType:ptInput, DataType:ftInteger
ID_SEQUENCE, ParamType:ptInput, DataType:ftInteger
TAG, ParamType:ptInput, DataType:ftInteger
INFO, ParamType:ptInput, DataType:ftString

—> Lege regel na deze entry in de .TXT file Param 3:INFO="CC_LINE$> > > Smaakmakende Catering < < <"
Warning: 5 > 4 (Splitter.Count > InsertQuery.Params.Count) Embedded | in record "926615|0|53|CC_LINE$BEDRIJFSMAKELAARDIJ | RESEARCH & CONSULTANCY"
Warning: 6 > 4 (Splitter.Count > InsertQuery.Params.Count) Embedded | in record “926615|1|53|CC_LINE$BELEGGINGEN | RETAIL | TAXATIES”

white_phonenumber.txt

insert into WHITE_PHONENUMBER (ID,PHONENUMBER) values (:ID,:PHONENUMBER)

ID, ParamType:ptInput, DataType:ftInteger
PHONENUMBER, ParamType:ptInput, DataType:ftString

white_subscriber.txt

insert into WHITE_SUBSCRIBER (ID,TITLE,FIRSTNAME,INFIX,LASTNAME,STREET,HOUSENUMBER,POSTCODE,CITY,PHONENUMBER,CATEGORY) values (:ID,:TITLE,:FIRSTNAME,:INFIX,:LASTNAME,:STREET,:HOUSENUMBER,:POSTCODE,:CITY,:PHONENUMBER,:CATEGORY)

ID, ParamType:ptInput, DataType:ftInteger
TITLE, ParamType:ptInput, DataType:ftString
FIRSTNAME, ParamType:ptInput, DataType:ftString
INFIX, ParamType:ptInput, DataType:ftString
LASTNAME, ParamType:ptInput, DataType:ftString
STREET, ParamType:ptInput, DataType:ftString
HOUSENUMBER, ParamType:ptInput, DataType:ftString
POSTCODE, ParamType:ptInput, DataType:ftString
CITY, ParamType:ptInput, DataType:ftString
PHONENUMBER, ParamType:ptInput, DataType:ftString
CATEGORY, ParamType:ptInput, DataType:ftString

Warning: 12 > 11 (Splitter.Count > InsertQuery.Params.Count) Embedded | in record "1115790||||Dijkstra|Sutter Netwerk Notarissen|Newtonbaan|16|3439NK|Nieuwegein|0306038129|"
Warning: 12 > 11 (Splitter.Count > InsertQuery.Params.Count) Embedded | in record “3447969||||Notariskantoor Dijkstra|Sutter Netwerk Notarissen|Newtonbaan|16|3439NK|Nieuwegein|0306038129|”

done.

Over de delimiter, ik had de laatste edities van wit al een keer
http://www.foondump.nl/forum/viewtopic.php?p=2743#2743
onder elkaar gezet:[quote][size=9]Op CD ZM200602 is er nog niets aan de hand:
1128536||||Dijkstra & Sutter Netwerk Notarissen|Noordstedeweg|2|3431KC|Nieuwegein|0306038129|
3494572||||Notariskantoor Dijkstra & Sutter Netwerk Notarissen|Noordstedeweg|2|3431KC|Nieuwegein|0306038129|

ZM200603, hier duikt de extra " | " op:
1127946||||Dijkstra|Sutter Netwerk Notarissen|Noordstedeweg|2|3431KC|Nieuwegein|0306038129|
3487210||||Notariskantoor Dijkstra|Sutter Netwerk Notarissen|Noordstedeweg|2|3431KC|Nieuwegein|0306038129|

CM200701:
1115790||||Dijkstra|Sutter Netwerk Notarissen|Newtonbaan|16|3439NK|Nieuwegein|0306038129|
3447969||||Notariskantoor Dijkstra|Sutter Netwerk Notarissen|Newtonbaan|16|3439NK|Nieuwegein|0306038129|

ZM200701: hier in de eerste regel is het nu een " / "
1104497||||DIJKSTRA/SUTTER NETWERK NOTARISSEN|Newtonbaan|16|3439NK|Nieuwegein|0306038129|
3413249||||Notariskantoor Dijkstra|Sutter Netwerk Notarissen|Newtonbaan|16|3439NK|Nieuwegein|0306038129|

ZM200702: de " | " in de eerste regel hier is een letter " l " (el)
1090629||||DIJKSTRA l SUTTER NETWERK NOTARISSEN|Newtonbaan|16|3439NK|Nieuwegein|0306038129|
3368387||||Notariskantoor Dijkstra|Sutter Netwerk Notarissen|Newtonbaan|16|3439NK|Nieuwegein|0306038129|
[/size][/quote]
Je ziet dat ze op de twee CD’s na die van jou zijn gaan varieren.

Daarom en ook omdat je niet weet op hoeveel plekken er intussen blind gevaren wordt op het “stokje” (in ieder geval is dat zo in de scripts die met foondump meegegeven worden) is het misschien safer om de pipe dan maar te handhaven.

Waterdicht escapen zit er ook niet in vanwege alle mogelijke verschillende wegen die men met de csv-bestanden kan gaan bewandelen.

Resteert de optie om het in Foondump zelf te doen, door die paar “|”-tekens telkens als ze daar voorbijkomen te vervangen door bijvoorbeeld een ‘broken bar’ (¦) en dan maar zo het ‘broken pipe’-probleem de wereld uit te helpen? 8)

Hmm, dat is nog wel een idee, om gewoon de Foondump output te wijzigen.

Grappig dat ze zijn gaan varieren. Poging om CDFoon versies te herkennen, of willen ze ons helpen? :smiley:

Wat natuurlijk helemaal cool zou zijn, is als je de delimiter als parameter kunt opgeven…

Heb ik ook gedaan met alle parameters voor de CSV import in Interbase.
Onder het mom beter lui dan moe heb ik het in een Delphi ClientDataSet gesmeten en als XML opgeslagen.
(En ja, default Interbase uid/pwd is inderdaad zoals hieronder )

<?xml version="1.0" standalone="yes"?> <DATAPACKET Version="2.0"> <METADATA> <FIELDS> <FIELD attrname="Database" fieldtype="string" WIDTH="240"/> <FIELD attrname="User_Name" fieldtype="string" WIDTH="40"/> <FIELD attrname="Password" fieldtype="string" WIDTH="40"/> <FIELD attrname="CDFoongidsCSVPath" fieldtype="string" WIDTH="240"/> </FIELDS> <PARAMS/> </METADATA> <ROWDATA> <ROW Database="C:\Dump\db\CDFOONGIDS.IB" User_Name="sysdba" Password="masterkey" CDFoongidsCSVPath="C:\Dump\FoonDump"/> </ROWDATA> </DATAPACKET>

Interbase DDL staat alvast hier:

http://snap.xs4all.nl/upload/browsable/cdfoongids.ib.ddl.txt

Het is nog in experimenteerfase, maar dan hebben jullie vast wat.

(DLL → DDL - duh! )