Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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, 1272 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
Datenbanken
Informix SE Tabelle alle Felder auf NULL prüfen (4)

Frage von RalfHackmann zum Thema Datenbanken ...

VB for Applications
Von einer Exceltabelle Daten in eine Informix Datenbank übertragen (4)

Frage von Voosjey zum Thema VB for Applications ...

Festplatten, SSD, Raid
gelöst Datenträger verabschiedet sich mit 0,00 Bytes, lässt sich nicht mehr initialisieren (21)

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

Datenbanken
gelöst Access 2010 Insert Into bei Fehler Msgbox (2)

Frage von Dr.Cornwallis zum Thema Datenbanken ...

Neue Wissensbeiträge
Windows Update

Novemberpatches und Nadeldrucker bereiten Kopfschmerzen

(14)

Tipp von MettGurke zum Thema Windows Update ...

Windows 10

Abhilfe für Abstürze von CDPUsersvc auf Win10 1607 und 2016 1607

(7)

Tipp von DerWoWusste zum Thema Windows 10 ...

RedHat, CentOS, Fedora

Fedora 27 ist verfügbar

Information von Frank zum Thema RedHat, CentOS, Fedora ...

Heiß diskutierte Inhalte
Server
Bilder aus dem Web mit CSV runterladen (30)

Frage von Yannosch zum Thema Server ...

LAN, WAN, Wireless
Gebäudeverkabelung 10Gigabit LWL (27)

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

Windows Update
Novemberpatches und Nadeldrucker bereiten Kopfschmerzen (14)

Tipp von MettGurke zum Thema Windows Update ...