Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Informix SE INSERT Felder initialisieren, aber richtig?

Frage Entwicklung Datenbanken

Mitglied: RalfHackmann

RalfHackmann (Level 1) - Jetzt verbinden

25.09.2014 um 14:15 Uhr, 1242 Aufrufe, 1 Kommentar

Hallo,

es kommt immer wieder mal vor, dass ich Datensätze in einer CSV Datei erhalte und diese in die Datenbank unseres ERP Systems per INSERT importieren muss (hier Stücklistenpositionen)
Da die in entsprechenden Tabelle mehr Felder enthält wie die Spalten der zu importierenden CSV Datei, habe ich ein Problem mit der Initialisierung der restlichen Felder.
Denn wenn ich nur die Felder der CSV-Datei importiere, bleiben die anderen undefiniert und zeigen später in der Anwendung unsinnige Zeichen an.
Ich behelfe mich damit, indem ich im ERP System einen default Datensatz anlege, oder heraussuche und und per select undloade.
Diesen nutze ich dann als Vorlage für einen awk Befehl, indem ich die Felder aus der zu importierenden CSV-Datei an den richtigen Stellen einfüge.
Diese neue CSV Datei (hier fksag_import_tmp.csv) importiere ich dann Per LOAD un INSERT in die Tabelle.

Das Ganze funktioniert zwar, aber irgendwie kommt mir das unsauber vor!

Wie geht man hier normalerweise vor?

Ich muss zugeben, dass ich mich mit SQL Prozeduren nicht auskenne, falls die Vorgehensweise in diese Richtung geht.

Gruss

Ralf

# Aufbereiten der CSV-Datei fuer Import fksag 
# Pos1 -> aplannr 
# Pos2 -> arbgang 
# Pos3 -> pos 
# Pos5 -> te,tm 
# Pos6 -> tr 
# Pos7 -> tp 
gawk -v betrieb=${betrieb} --field-separator=";" '{printf "0;%s;0;%s;0;0,0;0;0;%s;99999999;%s;BPSM;0;text1;text2a; ; ;%s;%s;%s;0,0;%s;0,0;0,0;0,0;0,0;M;M;1,0;1,0;1,0;0;0;50100;1,0;0; ;1,0;1;0,0;1,0;1;N;0;0;0,0;1;1;0,0;0,0; ;0; ; ;%s;sql;0; ; ; ; ; ;100,0;100,0;100,0; ; ;P;0;0,0;0; ;0; ;\n", betrieb, $1, $3, $2, $6, $5, $5, $7, strftime("%Y%m%d") }' $datei > fksag_import_tmp.csv; 
 
dbaccess 1>> $log 2>&1 << EOSQL 
 
  DATABASE $db; 
   
  -- Import in fksag 
  LOAD FROM fksag_import_tmp.csv DELIMITER ";" 
  INSERT INTO fksag 
  sa, firma, werk, aplanr, aplavar, losgr, cd_index, gueltigv, pos, gueltigb, arbgang, arbplatz, aggruppe, text1, text2a, text2b, text2c,      
  tr, te, tm, taktme, puffer, liege, tefix, tmfix, tezuschl, zeitkz1, zeitkz2, posmenge, basisme, nutzen, lohnart, lohngrp, kostenst,    
  persfak, grverrkz, erfkz, schwgr, uelapkz, translos, splitfak, splittkz, rechkz, ruestaus, ausstufe, ausproz, bdekz, anzdruck, abwproz,     
  lauf, aendgr, anzmasch, kzopt, cd_status, anldat, anleger, aenddat, aenderer, pruefpl, kzcaq, erfkztr, kalksumm, mindgut, tolneg, tolpos,      
  aplatzb, apgrupb, apagbkz, prkz, sgewicht, sgeweinh, taetgrp, taetlavo, filler99    
  ); 
EOSQL
Mitglied: MadMax
26.09.2014 um 16:44 Uhr
Hallo Ralf,

zwar ist Informix nicht mein Gebiet, aber Deine Frage läßt sich ja auch einigermaßen allgemein beantworten.

Sauber lösen kann man es womöglich direkt beim Import, daß man dort definieren kann, was mit den Spalten passiert, die nicht im Import sind. Ob Informix das kann weiß ich nicht.

Wenn Du die Tabelle abändern kannst und es Standardwerte sind, die in die fehlenden Spalten kommen (also keine für diesen Import speziellen Werte), dann kannst Du bei der Tabellendefinition für die Spalten auch Standardwerte festlegen.

Mal abgesehen davon, daß auf einigen Spalten Standardwerte existieren gehe ich normalerweise den Weg, daß ich die Daten 1:1 in eine temporäre Tabelle importiere und von da aus die Zieltabelle fülle, wobei ich dann eben auch beliebige andere Spalten belegen kann. Der Weg ist im Grunde nicht viel anders als Deiner. Du bereitest die Daten auf, schreibst sie in eine temporäre CSV-Datei und importierst sie dann in die Zieltabelle. Ich importiere die Daten in eine temporäre Tabelle, bereite sie auf und schreibe sie dann in die Zieltabelle. Und wenn die CSV-Datei nicht 1:1 in die Tabelle paßt, dann muß man die Daten an irgendeiner Stelle anpassen, da ist nichts unsauberes dabei.

Gruß, Mad Max
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
Skype for Business 2016 Chat Kontakte richtig anzeigen?

Frage von Geforce zum Thema Microsoft Office ...

Windows Server
gelöst GPO Fonts - funktioniert nicht richtig (9)

Frage von Adnan88 zum Thema Windows Server ...

Festplatten, SSD, Raid
SMART-Wert Ultra DMA CRC Error Count richtig deuten (1)

Frage von coltseavers zum Thema Festplatten, SSD, Raid ...

Neue Wissensbeiträge
Windows 10

Windows 8.x oder 10 Lizenz-Key aus dem ROM auslesen mit Linux

(6)

Tipp von Lochkartenstanzer zum Thema Windows 10 ...

Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(38)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Heiß diskutierte Inhalte
Festplatten, SSD, Raid
POS Hardware und alternativen zu Raid 1? (21)

Frage von Brotkasten zum Thema Festplatten, SSD, Raid ...

Windows 10
gelöst Windows 10 Home "Netzlaufwerk nicht bereit" (19)

Frage von Oggy01 zum Thema Windows 10 ...

Viren und Trojaner
Verschlüsselungstrojaner simulieren (18)

Frage von AlbertMinrich zum Thema Viren und Trojaner ...

Exchange Server
Exchange Postfach leeren - nicht löschen (11)

Frage von AndreasOC zum Thema Exchange Server ...