# Input txt File



## fatfox (26. Dez 2010)

Hallo Leute,

Ich möchte eine txt Datei in meine Table importieren.

Mein Table "col" hat 2 Spalten, nähmlich col1 und col2:
----------------
col1 | col2 | 
-----------------
ich habe col.col1 die Daten schon eingegeben.

Jetzt habe ich eine Datei "col2.txt", sie enthalt die Werte von col2
col2.txt sieht so aus:
5
8
7
3
...

Frage: Wie kann ich die "col2.txt" in col.col2 importieren?

Ich habe folgende SQL geschrieben, aber funktioniert gar nicht:
LOAD DATA LOCAL INFILE '/home/conny/col2.txt' INTO TABLE col FIELDS TERMINATED BY ',' ENCLOSED BY '' LINES TERMINATED BY '\n' (col2)

Wo ist der Fehler?


Vielen Dank für die Bemühung und Merry Christmas!


----------



## tagedieb (26. Dez 2010)

Was genau funktioniert den nicht und wie sieht die Fehlermeldung aus?



			
				MySQL Documentation hat gesagt.:
			
		

> The
> 
> 
> 
> ...



Mit 
	
	
	
	





```
LOAD DATA INFILE
```
 kannst du nur ganze Zeilen reinladen (
	
	
	
	





```
INSERT
```
) aber nicht einzelne Felder updaten. Ausserdem fehlt in deinem File die Col1. Wie sollte den die Col2 mit den breits existierenden Records gemappt werden?

Loesung:
Definiere in deinem File die ganze Zeile oder lies das File manuel ein und benutze 
	
	
	
	





```
UPDATE
```
.


----------



## fatfox (26. Dez 2010)

Hi tagedieb,

Vielen Dank für deine Antwort. Mein Datei ist ziemlich groß, manuel lesen mit UPDATE dauert vielleicht lange Zeit. Aber wenn ich die ganze Tabelle in Datei neu definiere, ist auch sehr aufwendig. 
Kann ich meine meine File so definieren:

irgendwas , 5 
irgendwas , 8
irgendwas , 7
irgendwas , 3
...

Und beim Lesen vernachlässigen SQL die erste Spalte und nur die 2te Spalte lesen, geht das?


----------



## tagedieb (27. Dez 2010)

```
LOAD DATA INFILE
```
 kann nur neue Records einlesen oder vorhandene ersetzen (loeschen und neu anlegen).

Als Alternative koenntest du diese eine Kolonne in eine eigene Tabelle laden und sie mittels 
	
	
	
	





```
join
```
 mit der Ersten verlinken, dann brauchst du nicht die ganze Tabelle in der Datei zu definieren.


----------



## ARadauer (27. Dez 2010)

> Kann ich meine meine File so definieren:



mhn.. könnte sein.. 


> LOAD DATA LOCAL INFILE '/home/conny/col2.txt' INTO TABLE col FIELDS TERMINATED BY ',' ENCLOSED BY '' LINES TERMINATED BY '\n'


verstehst du das?
Also die Wert mit " " einschließen..
mach das mal im excel auf, da kann man das beim erneuten speichern einstellen...


----------



## fatfox (27. Dez 2010)

Hi tagedieb und ARadauer,

Ich denke, die beste Lösung ist wirklich wie tagdieb gesagt mit Join zu arbeiten. Und Ich bin einbisschen verwirrt mit der Dokumentation von MySQL, die Dokumentation hat noch etwas mit @var erzählt, sie meint, man kann einige Spatlen von input File verzichten:
LOAD DATA INFILE 'file.txt'  INTO TABLE t1  (column1, @dummy, column2, @dummy, column3);

Jetzt habe ich den Text endlich verstanden. 

Vielen Dank für eure Antwort!


----------

