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

gelöst Variablen als SQL Query in MySQL

Mitglied: core-moran

core-moran (Level 1) - Jetzt verbinden

31.01.2011, aktualisiert 14:48 Uhr, 3422 Aufrufe, 1 Kommentar

Nutzung des Inhaltes einer Variable als Teil eines Querys in MySQL.

Hallo,

ich möchte in MySQL eine Funktion erstellen, mit deren Hilfe ich Elemente zu einer Tabelle hinzufügen kann.
Das funktioniert sehr gut, ist nur futchtbar langsam bei vielen Elementen.

Deswegen hab ich mir überlegt, einen Puffer zu erzeugen (Session Variable) und diesen dann in einem Rutsch und in
einem Query hinzuzufügen, da das Ganze mindestens um den Faktor 1000 schneller ist.

Folgende 2 Funktionen habe ich hierfür implementiert.

1. Ein Element mit 2 Werten dem Puffer (einem String in dem ein Tel des finalen Queries aufgebaut wird) hinzufügen
2. Den Puffer als Query ausführen

Leider scheint MySQL die Session-Variable in der Flush-Funktion nicht korrekt auszuwerten.
Weiß jemand wie ich MySQL überreden kann, den Inhalt der Variable @elemenT_BUFFER als Teil des Querys zu interpretieren?

Der Fehlercode ist, dass die Anzahl der einzufügenden Spalten nicht mit den ausgewählten übereinstimmt.

Vielen Dank,
Eric


01.
CREATE PROCEDURE `add_element_to_buffer`( 
02.
     ELEMENT_VALUE_1 INT, 
03.
     ELEMENT_VALUE_2 INT) 
04.
BEGIN 
05.
    -- add needed commas to separate the elements in the string 
06.
    IF @ELEMENT_BUFFER <> "" THEN 
07.
        SET @ELEMENT_BUFFER = CONCAT_WS("", @ELEMENT_BUFFER, ", "); 
08.
    END IF; 
09.
     
10.
    -- add element to the buffer string  
11.
    -- in the format: "(value_1, value_2)" 
12.
    SET @ELEMENT_BUFFER = CONCAT_WS("", @ELEMENT_BUFFER, "(",  
13.
                                        ELEMENT_VALUE_1, ",", 
14.
                                        ELEMENT_VALUE_2, ")" ); 
15.
     
16.
END 
17.
$$ 
18.
 
19.
 
20.
CREATE PROCEDURE `flush_element_buffer`() 
21.
BEGIN 
22.
    -- add the elements from the buffer 
23.
     
24.
    INSERT INTO `elemt_element` ( 
25.
        `elemt_value_1`, 
26.
        `elemt_value_2`) 
27.
    VALUES ( 
28.
        @ELEMENT_BUFFER     -- <=== Hier ist das Problem 
29.
    ); 
30.
     
31.
    -- clear the buffer 
32.
    SET @ELEMENT_BUFFER = ""; 
33.
     
34.
END 
35.
$$ 
36.
 
Mitglied: core-moran
31.01.2011 um 15:27 Uhr
Hallo,

mit einer Änderung in der Flush Funktion funktioniert es:

01.
CREATE PROCEDURE `flush_element_buffer`() 
02.
BEGIN 
03.
       
04.
    set @qry = CONCAT('INSERT INTO `elemt_element` ', 
05.
                      '(`elemt_value_1`, `elemt_value_2`) ', 
06.
                      'VALUES ', 
07.
                      @ELEMENT_BUFFER, ';'); 
08.
 
09.
    -- prepare the statement 
10.
    PREPARE myStatement FROM @qry; 
11.
     
12.
    -- execute statement 
13.
    EXECUTE myStatement; 
14.
     
15.
    -- clear the buffer 
16.
    SET @ELEMENT_BUFFER = ''; 
17.
     
18.
END 
19.
 
Bitte warten ..
Ähnliche Inhalte
Datenbanken
SQL-Query - Like Operator - Usereingabe
gelöst Frage von SchelinhoDatenbanken4 Kommentare

Hallo! Ich habe ein SQL-Script, welches als solches auf der Datenbank im SQL-Developer funktioniert. Mir geht es um eine ...

PHP
MySQL in PHP mit Variablen
gelöst Frage von carl7nPHP10 Kommentare

Hallo, ich habe PHP-Grundkenntnisse, schaffe es aber nicht, nach meinen Vorstellungen ein paar kleine PHP-Scripts zusammen arbeiten zu lassen. ...

PHP

MySQL Update eines Datensatz mit Variable

gelöst Frage von Jens4everPHP4 Kommentare

Hallo zusammen, ich habe jetzt 2 h gesucht und versucht und komme gerade nicht weiter Ich habe eine Mail-Verifizierung ...

Netzwerkmanagement

MySQL-Variable max-connetction

gelöst Frage von piipapoNetzwerkmanagement2 Kommentare

Hallo liebe Community, für meine Projektarbeit zum Thema Monitoring bin ich auf ein Problem gestoßen, welches ich lösen konnte ...

Neue Wissensbeiträge
Windows 7

Windows 7 - Server 2008 R2: Exploit für Total Meltdown verfügbar

Information von kgborn vor 2 StundenWindows 7

Kleine Information für Administratoren, die für die Updates von Windows 7 SP1 und Windows Server 2008 R2 SP1 verantwortlich ...

Sicherheit

Zero Day-Schwachstelle im Internet Explorer - wird von APT bereits ausgenutzt

Information von kgborn vor 12 StundenSicherheit

Im Kernel des Internet Explorer scheint es eine Zero Day-Lücke zu geben, die von staatlichen Akteuren (APT) im Rahmen ...

Microsoft
Folder Security Viewer-Lizenzen zu gewinnen
Information von kgborn vor 13 StundenMicrosoft

Ich nehme das Thema mal in Absprache mit Frank hier auf, da es für den einen oder anderen Administrator ...

Hardware

Feueralarm killt Festplatten in Rechenzentrum - führt zu größerem Ausfall

Information von kgborn vor 13 StundenHardware11 Kommentare

Noch ein kleiner Beitrag für Administratoren, die in Rechenzentren aktiv sind - so als Fingerzeig. Denn es gibt Szenarien, ...

Heiß diskutierte Inhalte
Linux
Linux Server oder Windows Server - lohnt eine Umstellung auf Linux und ebenso basierende SW bei einer langfristigen Planung?
Frage von motus5Linux23 Kommentare

Wir brauchen bei uns einen neuen Server. Dieser wird als Fileserver, Domäne Controller sowie Exchange Server verwendet. Wir versuchen ...

DSL, VDSL
ISP Wechsel auf Vodefone Koax, Gebäudeverkabelung nur per Cat 7
solved Frage von wusa88DSL, VDSL18 Kommentare

Hallo Zusammen, ich bin momentan bei Mnet als Glasfaser Kunde und möchte Preis/Leistungs-Technisch zu Kabel Deutschland / Vodafone wechseln. ...

Windows Server
Domänencontroller trennen
Frage von Akit57Windows Server13 Kommentare

Hallo, ich hoffe das mir hier jemand meine Frage trotz der spärlichen Informationen die ich geben kann beantworten kann: ...

LAN, WAN, Wireless
Kommunikation zwischen verschiedenen IP-Bereichen
Frage von DirkHoLAN, WAN, Wireless13 Kommentare

Hallo zusammen, von Unitymedia habe ich ein neues Modem (Connect Box) erhalten, das u.a. IPv4 aber keinen Bridge Mode ...