SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Das Zend Framework

Das Zend Framework zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 20.01.2015, 22:30:11
kidchino kidchino ist offline
Anfänger
 
Registriert seit: Jan 2015
Alter: 41
Beiträge: 19
Daten in Tabelle einfügen

Hi zusammen,

ich möchte gern folgende Daten in eine Tabelle schreiben.
Hier ein BSP.Datensatz:

PHP-Code:
4OR-Q J OPER RES;4OR-A QUARTERLY JOURNAL OF OPERATIONS RESEARCH;GERMANY;1619-4500;270;0,73;1,137;0,03;33;5,4;0,00163;0,635;SCIENCE;
Die einzelen Spalten sind ";"-getrennt. Die Zahlen in Spalte 5 und 9 sind immer ganzzahlig. Hier sind aber auch leere Zellen möglich.
Spalte 6,7,8,10,11,12 sind Dezimalzahlen mit max. 6 Nachkommenzahlen und insgesamt max. 9 Ziffern.

So habe ich die Tabelle aufbauen wollen.

PHP-Code:
CREATE TABLE `journal_cr` (
  `
Abbrevationvarchar(45NOT NULL,
  `
Namevarchar(255NOT NULL,
  `
Countryvarchar(45) DEFAULT NULL,
  `
ISSNvarchar(9) DEFAULT NULL,
  `
TotalCitesint(11) DEFAULT NULL,
  `
ImpactFactorfloat DEFAULT NULL,
  `
ImpactFactor_5Yfloat DEFAULT NULL,
  `
ImmediacyIndexfloat DEFAULT NULL,
  `
Articlesint(11) DEFAULT NULL,
  `
CitedHalfLifefloat DEFAULT NULL,
  `
EigenfactorScorefloat DEFAULT NULL,
  `
ArticleInfluenceScorefloat DEFAULT NULL,
  `
Categoryvarchar(255) DEFAULT NULL,
  `
VHBvarchar(3) DEFAULT NULL

Leider kommt dann immer der Fehler :
10853 row(s) affected, 64 warning(s): 1265 Data truncated for column 'ImpactFactor' at row 1
Und die Nachkommazahlen werden abgeschnitten.
Jemand eine Idee wo ich den Fehler eingebaut habe?


LG
kid
Mit Zitat antworten
  #2  
Alt 21.01.2015, 08:05:57
pguser pguser ist offline
Junior Member
 
Registriert seit: Apr 2014
Alter: 57
Beiträge: 186
AW: Daten in Tabelle einfügen

Zitat:
Zitat von kidchino Beitrag anzeigen
Jemand eine Idee wo ich den Fehler eingebaut habe?
Ja, klar. In dem Teil, den Du uns nicht gezeigt hast.
Mit Zitat antworten
  #3  
Alt 21.01.2015, 12:26:32
Benutzerbild von BozzaCoon
BozzaCoon BozzaCoon ist offline
Anfänger
 
Registriert seit: Dec 2014
Alter: 35
Beiträge: 20
AW: Daten in Tabelle einfügen

Code:
insert into kidchino values
('4OR-Q J OPER RES','4OR-A QUARTERLY JOURNAL OF OPERATIONS RESEARCH','GERMANY','1619-4500','270','0.73','1.137','0.03','33','5.4','0.00163','0.635','SCIENCE','C')
zumindest das einfügen klappt ohne probleme bei mir...
ach du musst die Kommazahlen mit (.) angeben!

Habe hier auf Arbeit eine ähnliche Konstellation... Ich bekomme eine XML welche Daten enthält die nicht auf meine Tabelle passen.
Ich füge alle Daten in eine Tabelle die komplett aus char besteht und übermittle die Daten danach in die gewollte formation mit
den gewollten änderungen in die Zieltabelle.
like
Code:
#insert into zielTabelle
select
CONVERT(decimal(10,1),CONVERT(float,REPLACE([spalteMitKomma],',','.'))) AS 'umbenannt'
from charTabelle
von CHAR in DECIMAL klappt nicht deswegen der umweg über float
Wenn du Decimal nicht brauchst kannst auch gleich float lassen...
Das ganze führe ich solange aus bis die ausgabe auf die Zieltabelle passt und dann benutze ich das Insert mit.
Vielleicht hilft dir das als Ansatz dein Problem zu lösen.
Lg BozzaCoon
Mit Zitat antworten
  #4  
Alt 21.01.2015, 13:00:46
kidchino kidchino ist offline
Anfänger
 
Registriert seit: Jan 2015
Alter: 41
Beiträge: 19
AW: Daten in Tabelle einfügen

@pguser:
Herrlich, deine Beiträge sind so herrlich konstruktiv!
Verstehe nicht warum du überhaupt Deine Zeit verschwendest und antwortest.

@BozzaCoon:

Vielen Dank. Ich werde es gleich probieren. An den Punkt hatte ich auch schon gedacht aber wusste nicht wie ich ihn ändere. Die Daten kommen aus Excel. Und die Änderung des Trennzeichens in Excel brachte nicht viel. Hab dann den Umweg über CSV und NOTEPAD++ gemacht und dort alle "," zu "." ersetzt. Aber ein Fehler kam dann auch :)
Ich probiere mal Deinen Ansatz! Danke!
Mit Zitat antworten
  #5  
Alt 21.01.2015, 13:21:08
kidchino kidchino ist offline
Anfänger
 
Registriert seit: Jan 2015
Alter: 41
Beiträge: 19
AW: Daten in Tabelle einfügen

Hey,

jetzt habe ich den Fehler entdeckt.
Wenn ich eine so definierte Spalte habe:
`ImpactFactor` float DEFAULT NULL,
und ich in dieser Spalte einen leeren Wert habe, dann kommt der Fehler und es wird eine "0" geschrieben anstelle von NULL.

Liegt das daran, dass NULL kein Float ist ?
Wenn ja (und auch wenn nicht) wie kann ich es ändern?
"0" ist auch in meinem Fall ja nicht "keine Angabe"

VG

Geändert von kidchino (21.01.2015 um 13:36:44 Uhr)
Mit Zitat antworten
  #6  
Alt 22.01.2015, 13:42:33
sysop sysop ist offline
Member
 
Registriert seit: Mar 2004
Ort: wien
Beiträge: 512
AW: Daten in Tabelle einfügen

Zitat:
Zitat von kidchino Beitrag anzeigen
@pguser:
Herrlich, deine Beiträge sind so herrlich konstruktiv!
Verstehe nicht warum du überhaupt Deine Zeit verschwendest und antwortest.
Na ja, so unrecht hat er ja nicht, wo ist dein Code zum INSERT? Niemand weiss, was du wie in die Datenbank schreibst und genau da liegt der Fehler

Zitat:
Zitat von kidchino Beitrag anzeigen
...und ich in dieser Spalte einen leeren Wert habe, dann kommt der Fehler und es wird eine "0" geschrieben anstelle von NULL.
Hey,
Liegt das daran, dass NULL kein Float ist ?
Wenn ja (und auch wenn nicht) wie kann ich es ändern?
"0" ist auch in meinem Fall ja nicht "keine Angabe"
VG
Jep..!
Leer ist keine Zahl, daher ein ungültiger Wert für ein float!
Ändern:
Indem du aus float z.B. ein varchar machst, da darf man dann auch leere Inhalte einfügen.
Ansonsten musst du dein Script umarbeiten und das Feld float auf 0 prüfen und 0 = 'Keine Angabe' setzen (im Sinne 0 = Nichts, also keine Angabe)
Ein 0 erreicht man recht leicht, indem man z.B. die Variable, in der dein Wert liegt mit 1 multipliziert. Ist diese Variable '' (leer) ergibt die Multiplikation 0

PHP-Code:
<?PHP
$a 
'';
$b 1;

echo 
'$a * $b = '.($a $b);
Auch hier fehlt schlicht der PHP-Code für dein INSERT, den du einsetzt, aus der reinen Tabellendefinition (hier mal ein Lob, dass du die Tabelle und ihren Aufbau überhaupt gepostet hast) kann man nicht ersehen, wo die Fehler herkommen.
__________________
Gruss sys ;-)
Ich möchte wie mein Grossvater sterben, lächelnd und schlafend, nicht schreiend und weinend, wie sein Beifahrer.
Mit Zitat antworten
  #7  
Alt 22.01.2015, 16:21:38
kidchino kidchino ist offline
Anfänger
 
Registriert seit: Jan 2015
Alter: 41
Beiträge: 19
AW: Daten in Tabelle einfügen

Hey sysop,

danke für die Antwort.

Ich habe die Daten entweder mit
PHP-Code:
Load data local infile *.csv 
oder über ein Excel Addon in die Datenbank geladen.

Varchar hatte ich auch probiert, aber dann fiel mir auf, dass bei Operationen( bspw. MAXIMUM)
9.1 größer ist als 11.6. Und da wusste ich nicht was sonst noch so schief geht beim Rechnen.

Ich habe teilweise auch Werte die wirklich '0' sind und daher ist es nicht mehr eindeutig welcher Wert wirklich '0' ist und welcher NULL seinen sollte, jetzt aber fälschlichweise '0' ist.

Ich hab mir dann mit einem speziellen Wert geholfen (-77). Das verändern natürlich den Mittelwert (bspw) aber ich weiß es ja. Ist nur doof wenn ich die Datenbank übergebe.

Eine richtige Lösung gibt es wohl nicht.

VG
Mit Zitat antworten
  #8  
Alt 22.01.2015, 16:39:35
pguser pguser ist offline
Junior Member
 
Registriert seit: Apr 2014
Alter: 57
Beiträge: 186
AW: Daten in Tabelle einfügen

Zitat:
Zitat von kidchino Beitrag anzeigen

Eine richtige Lösung gibt es wohl nicht.
da liegst du falsch.
Mit Zitat antworten
  #9  
Alt 23.01.2015, 10:14:29
kidchino kidchino ist offline
Anfänger
 
Registriert seit: Jan 2015
Alter: 41
Beiträge: 19
AW: Daten in Tabelle einfügen

[...]
Mit Zitat antworten
  #10  
Alt 23.01.2015, 10:51:20
pguser pguser ist offline
Junior Member
 
Registriert seit: Apr 2014
Alter: 57
Beiträge: 186
AW: Daten in Tabelle einfügen

Zitat:
Zitat von kidchino Beitrag anzeigen
[...]

Genau.

Code:
test=# create table abc(a int, b numeric, c float);
CREATE TABLE
test=*# copy abc from stdin csv delimiter ';' null '';
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself.
>> ;;
>> \.
COPY 1
test=*# select * from abc ;
 a | b | c
---+---+---
   |   |
(1 row)
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Daten aus 5 Tabellen kombinieren -> neue Tabelle schreiben stefando MySQLi/PDO/(MySQL) 2 01.03.2012 22:26:58
Daten in eine SQL Tabelle einfügen (bin SQL Anfänger) Sven111 MySQLi/PDO/(MySQL) 5 10.09.2010 21:58:36
Feld hinzufügen, in Mysql Tabelle, Tabelle hat aktive Daten juerle PHP Grundlagen 2 19.03.2010 17:54:46
Daten nach Spalteninhalte aus anderer Tabelle sortieren paedda MySQLi/PDO/(MySQL) 2 14.05.2009 15:46:15
Neue Inhalte in Tabelle aus anderer Tabelle einfügen Hanniball MySQLi/PDO/(MySQL) 0 10.01.2008 16:39:06


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:47:07 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt