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, 1215 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 ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Firewall
Firewall für DMZ und Intranet richtig konfigurieren (3)

Frage von vGaven zum Thema Firewall ...

Windows Server
Windows Server 2016 VPN richtig konfigurieren (1)

Frage von junior zum Thema Windows Server ...

Outlook & Mail
gelöst Kompletter Export von Postfach in Outlook. wie mache ich es richtig? (30)

Frage von fireskyer zum Thema Outlook & Mail ...

LAN, WAN, Wireless
gelöst Netzwerkstecker richtig verkabelt? (4)

Frage von billy01 zum Thema LAN, WAN, Wireless ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (22)

Frage von patz223 zum Thema Windows Userverwaltung ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (19)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...