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

Komplettes Array in MySQL Datenbank

Frage Entwicklung PHP

Mitglied: Roadrunner777

Roadrunner777 (Level 1) - Jetzt verbinden

22.06.2012, aktualisiert 11:17 Uhr, 3744 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: Roadrunner777
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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
PHP
gelöst Php regex und Array (5)

Frage von Thomas91 zum Thema PHP ...

C und C++
gelöst Anzahl der Buchstaben in einem String Element Array C++ (3)

Frage von Protected zum Thema C und C ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...

Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...

Windows Server
Suche passender Treiber (12)

Frage von stolli zum Thema Windows Server ...