Top-Themen

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

Komplettes Array in MySQL Datenbank

Frage Entwicklung PHP

Mitglied: 94451

94451 (Level 1)

22.06.2012, aktualisiert 11:17 Uhr, 3913 Aufrufe, 6 Kommentare

Hallo ihr,

ich habe ein multidiemensionales Array das ich in eine MySQL Datenbank übernehmen möchte, vorhandene Datensätze möchte ich aber nicht überschreiben!

mein Array sieht ca. so aus!

01.
Array 
02.
03.
    [0] => Array 
04.
05.
            [0] => 345 
06.
            [1] => 3241 
07.
08.
 
09.
    [1] => Array 
10.
11.
            [0] => 234 
12.
            [1] => 34561 
13.
14.
 
15.
    [2] => Array 
16.
17.
            [0] => 1234  
18.
            [1] => 13245  
19.
20.
 
21.
... 
22.
 
23.
    [854] => Array 
24.
25.
            [0] => 345 
26.
            [1] => 1234 
27.
28.
)
jetzt möchte ich das Array in eine MySQL Datenbank eintragen!

die Datenbank sieht so aus!

01.
FELD1  | FELD2  | FELD3  | Datum 
02.
1234   | 13245  | 500    | 17.06.2012
jetzt möchte ich alle Werte eintragen! Als Feld3 wird ein (immergleicher) fester Wert eingetragen! Datum soll das jetzige eingetragen werden!

sollte ein Datensatz (Feld1, Feld2) => (Array[x][0], Array[x][1]) bereits vorhanden sein, sollte dieser ausgelassen werden!

01.
whileschleife mit Array{ 
02.
 
03.
INSERT INTO tabelle (FELD1, FELD2, FELD3, Datum) VALUES (Array[x][0], Array[x][1], 100, jetzt) 
04.
 
05.
}
Das sollte so annähernd Funktionieren!

Was mir aber jetzt fehlt:
1. wie prüfe ich ob Feld1 und Feld2 bereits mit gleichen Daten vorhanden sind? -> nur wenn beide gleich sind darf kein eintrag gemacht werden!
2. ist eine whileschleife sinnvoll? bei 800 Datensätze stell ich mir das sehr rechenintensiv vor!

Danke
Mitglied: LianenSchwinger
22.06.2012 um 11:30 Uhr
Hallo,

folgendes müsste funktionieren

01.
INSERT INTO tabelle (feld1, feld2, feld3, datum) 
02.
    SELECT Array[x][0], Array[x][1], 100, jetzt FROM dual 
03.
    WHERE NOT EXISTS (SELECT * FROM tabelle 
04.
                      WHERE feld1 = Array[x][0] AND feld2 = Array[x][1]);
Davon ab könnte auch Dein obiges INSERT klappen. Wenn feld1 und feld2 als Primary-Key definiert sind dürfte eigentlich kein INSERT mit der gleichen Kombination möglich sein.

Gruß Jörg
Bitte warten ..
Mitglied: nxclass
22.06.2012, aktualisiert um 14:19 Uhr
.. hatten wir das nicht erst, dass ein SELECT auf eine beim INSERT/UPDATE/DELETE gesperrte Tabelle (wenn MyISAM) nicht geht ?

Wenn feld1 und feld2 als Primary-Key definiert sind
dann reicht ein
01.
INSERT IGNORE INTO ...
.. am sichersten ist natürlich einfach vorher ein SELECT zu machen.
Bitte warten ..
Mitglied: LianenSchwinger
22.06.2012 um 14:53 Uhr
Hallo nxclass,

stimmt wenn MyISAM hatten wir das gerade

Ich werde mir mal die Doku für MySQL runterladen. Zu Oracle scheint es da doch einige Unterschiede zu geben.

Gruß Jörg
Bitte warten ..
Mitglied: nxclass
24.06.2012 um 13:14 Uhr
ist die Frage gelöst ?

zu 2.
800 Datensätze sind echt kein Ding. Wenn du noch das letzte raus holen willst, dann erstelle für das INSERT (und das SELECT) jeweils ein prepared Statement und arbeite in der while Schleife nur noch mit den Parametern.
Bitte warten ..
Mitglied: 94451
25.06.2012, aktualisiert um 10:09 Uhr
Zitat von nxclass:
ist die Frage gelöst ?

noch nicht! Liegt aber daran das ich mich noch nicht drüber gemacht habe!

Falls noch Probleme sind werde ich hier schreiben, falls nicht als gelöst markieren!

was mir grad noch so einfällt:
-> ich mache einen Abruf aus einer OracleSQL Tabelle in das besagte Array! Und trage diese (Dann in die MySQL Tabelle ein -> allerdings nicht den Kompletten Datensatz sondern nur -> Nichtvorhandene IDs und nicht alle Spalten)

geht das effizienter als:
Abruf (Oracle SQL) -> Array
Array -> Eintrag (MySQL)?

-> weil das ganze laden bei aktuellen 900 Datensätze (ständig wachsend) doch ~30 Sekunden dautert ... (könnte auch an den datenleitungen/auslastung liegen bei uns im netzwerk -> aber gerade deswegen ist der effiziensteste weg mir wichtig!)

Vielen Dank
Bitte warten ..
Mitglied: nxclass
25.06.2012 um 16:10 Uhr
geht das effizienter als:
Ein export / import direkt auf den Servern sollte da am schnellsten gehen. Wenn dies öfters gemacht werden muss könnte man versuchen ein Shell Skript zu schreiben.
Bitte warten ..
Ähnliche Inhalte
Datenbanken
MySQL - Separate Config für Datenbanken
Frage von EinTypDatenbanken2 Kommentare

Hallo Community, ich habe einen MySQL-Server und habe mich letztens an einer Eigenschaft von InnoDB gestört: Das hochzählen der ...

PHP
PHP MySQL Abfrage aus Datenbank
Frage von Lost144PHP12 Kommentare

Hallo, Ich habe in einer Datenbank daten über VM's stehen. Angaben wie hostname,adresse, serverat usw. Wie kann ich in ...

Datenbanken
Login Probleme in mysql Datenbank
gelöst Frage von bigbootykillaDatenbanken2 Kommentare

Hi, ich habe hier eine Datenbank auf einer Ubuntu Kiste. Wenn ich mich versuche mit Code: einzuloggen bekomme ich ...

Datenbanken
MySQL Datenbank kopieren
Frage von Thor01Datenbanken8 Kommentare

Hallo, wie kopiere ich eine MySQL Datenbank? Kann ich hier einfach die Dateien kopieren und kann diese auch einfach ...

Neue Wissensbeiträge
Microsoft

Update KB4073578 für AMD CPU (Spectre und Meltdown Lücke)

Information von sabines vor 5 StundenMicrosoft

Wegen Problemen (BOSD, nicht startende PCs) wurde das Update KB4056897 und KB4056894 für AMD CPUs zurückgezogen. Dieses Update KB4073578 ...

Mac OS X

MacOS wo ist die Tilde ?

Tipp von Alchimedes vor 18 StundenMac OS X3 Kommentare

Hallo, ich hab eine MacOS qwertz Keyboard auf US Layout umgestellt da die Sonderzeichen besser erreichbar sind. Leider fehlt ...

Datenschutz

Weitere Informationen zum Sicherheitsproblem BeA

Information von Penny.Cilin vor 1 TagDatenschutz

Im folgenden ein weiterer Bericht über die Sicherheitsprobleme von Bea. Fataler Konstruktionsfehler im besonderen elektronischen Anwaltspostfach Gruss Penny

Windows 10

Systemdienste behalten nach Win10 inplace-Upgrade nicht die ggf. modifizierte Startart bei

Tipp von DerWoWusste vor 1 TagWindows 103 Kommentare

Stellt Euch vor, Ihr habt ein Win10 System und modifiziert dort die Startart von Systemdiensten. Zum Beispiel wollt Ihr ...

Heiß diskutierte Inhalte
Batch & Shell
Anmeldevorgang für Informatikraum (Schule) unter Windows
gelöst Frage von IngenieursBatch & Shell25 Kommentare

Hey zusammen, ich werde in naher Zukunft den Informatik Raum meiner jetzigen Schule von dem aktuellen Betreiber übernehmen (Vertrag ...

Windows 10
Netbook erkennt Soundkarte nicht - keinerlei Info zum Hersteller und Modell vom Netbook und Hardware bekannt
Frage von fyrb38Windows 1019 Kommentare

Guten Tag, meine Schwester reist in einigen Wochen für ein paar Monate ins Ausland und hat sich dafür ein ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
gelöst Frage von Winfried-HHBatch & Shell19 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...

Netzwerkgrundlagen
Welches Modem für VDSL 50000 der T-Com
Frage von Windows10GegnerNetzwerkgrundlagen18 Kommentare

Hallo, ein Kollege von mir will sich VDSL50000 von der T-Com holen, um daran einen Server zu betreiben. Ich ...