Groot text bestand opslaan in Database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Thomas de vries

thomas de vries

07/12/2014 06:52:39
Quote Anchor link
Hallo phphulpers,

Ik heb een vraag,
Ik zit met een text bestand wat vrij groot is die opgelagen moet worden in de database.
Maar voordat dit gebeurt moeten er eerst een aantal andere dingen verandert worden.

De text file bestaat uit dit

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
6    II_WEA_AXE_RODNEY    IDS_PROPITEM_TXT_000124    1    1    IK1_WEAPON    IK2_WEAPON_DIRECT    IK3_AXE    JOB_VAGRANT    1    =    =    1200    8000000    100    180    HD_ONE    =    PARTS_RWEAPON    =    0    =    =    9    9    1    1    0    =    =    25    33    _NONE    0    0    0    0    0    =    WT_MELEE_AXE    AS_DIAGONAL    AS_VERTICAL    AS_HORIZONTAL    AS_THRUST    =    =    =    =    =    0.06    =    AR_SHORT    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    XI_HIT_SWORD01    =    =    =    =    =    =    =    =    =    WEAPON_GENERAL    =    =    =    =    =    =    0    0    0    0    0    0    =    =    =    =    =    =    =    =    =    =    =    =    9    =    SND_PC_DMGSWDB    SND_PC_DMGSWDC    """itm_WeaAxeCurin.dds"""    0    """"""    IDS_PROPITEM_TXT_000125    9    300    0    0    1    0    0    0    1    0    2    =    =    =    =    =    =    =    =    =    =    1    1    1    1    1    0    ITEM_GRADE_NORMAL    1    TYPE1_WEAPON    TYPE2_WEAPON_ONEAXE    1    0    1    1
6    II_WEA_AXE_MORROW    IDS_PROPITEM_TXT_000128    1    1    IK1_WEAPON    IK2_WEAPON_DIRECT    IK3_AXE    JOB_VAGRANT    1    =    =    3300    8000000    100    180    HD_ONE    =    PARTS_RWEAPON    =    0    =    =    13    13    1    1    0    =    =    31    39    _NONE    0    0    0    0    0    =    WT_MELEE_AXE    AS_DIAGONAL    AS_VERTICAL    AS_HORIZONTAL    AS_THRUST    =    =    =    =    =    0.06    =    AR_SHORT    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    XI_HIT_SWORD01    =    =    =    =    =    =    =    =    =    WEAPON_GENERAL    =    =    =    =    =    =    0    0    0    0    0    0    =    =    =    =    =    =    =    =    =    =    =    =    13    =    SND_PC_DMGSWDB    SND_PC_DMGSWDC    """itm_WeaAxeSteel.dds"""    0    """"""    IDS_PROPITEM_TXT_000129    13    300    0    0    1    0    0    0    1    0    2    =    =    =    =    =    =    =    =    =    =    1    1    1    1    1    0    ITEM_GRADE_NORMAL    1    TYPE1_WEAPON    TYPE2_WEAPON_ONEAXE    1    0    1    1


zoals jullie zien zit er tussen elke getal/text een tab tussen.
Deze moet dus eerst ge replaced worden. Ik weet dat dit kan met str_replace dit is dan ook geen probleem.

Daarna moet elke regen in een array komen maar ook elke getal/woord na een ,

Dus het moet er uiteindelijk zo uit komen te zien


[1] => [1] = 6 [2] = II_WEA_AXE_RODNEY etc en voor de nieuwe regel
[2] => [1] = 6 [2] = II_WEA_AXE_MORROW etc

Hoe kan ik dit het beste doen.

Met vriendelijke groet,
 
PHP hulp

PHP hulp

29/03/2024 16:14:55
 
- Ariën  -
Beheerder

- Ariën -

07/12/2014 09:49:56
Quote Anchor link
Je kan str_replacen op \t, dat staat voor een TAB.
 
Eddy E

Eddy E

07/12/2014 10:25:19
Quote Anchor link
Of zoiets:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$string
= '6    II_WEA_AXE_RODNEY    IDS_PROPITEM_TXT_000124    1    1    IK1_WEAPON    IK2_WEAPON_DIRECT    IK3_AXE   etc';
list($naam, $id, $aantal, $iets, $soort, $direct, $axe, $job, $een, $is) = explode("\t", $string);
?>


Zo kan je elke kolom (want dat zijn het, neem ik aan?) gewoon benoemen ;)
Met explode(PHP_EOL, $string) kan je elke regel afwerken.
Gewijzigd op 07/12/2014 10:47:03 door Eddy E
 
- Ariën  -
Beheerder

- Ariën -

07/12/2014 13:31:50
Quote Anchor link
Of met file() en foreach.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

07/12/2014 14:19:59
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
LOAD DATA INFILE 'pad/naar/bestand.csv' INTO tablenaam

Gaat stukken sneller
 
Aad B

Aad B

07/12/2014 14:35:56
Quote Anchor link
Ger van Steenderen op 07/12/2014 14:19:59:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
LOAD DATA INFILE 'pad/naar/bestand.csv' INTO tablenaam

Gaat stukken sneller
Inderdaad en ook met deze loader kan je allerlei gewenste transformaties doen. Code voorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
mysql> LOAD DATA LOCAL INFILE 'dbip-country-2014-11.csv'
    -> INTO TABLE ip_country
    -> FIELDS TERMINATED BY ','
    -> ENCLOSED BY '"'
    -> LINES TERMINATED BY '\r\n'
    -> IGNORE 0 ROWS;
Query OK, 238658 rows affected (44.99 sec)
Records: 238658  Deleted: 0  Skipped: 0  Warnings: 0
Gewijzigd op 07/12/2014 14:53:35 door Aad B
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.