- 1 1. Unachoweza Kufanya katika Makala Hii
- 2 2. Aina za Uingizaji wa MySQL na Wakati wa Kutumia Kila Moja
- 3 3. Kuingiza Faili la SQL (Njia ya Haraka kwa Mafanikio)
- 4 4. Uingizaji wa CSV (Jambo Muhimu Zaidi: Haraka zaidi kwa LOAD DATA)
- 4.1 4.1 Kwanza: Mahitaji ya CSV
- 4.2 4.2 Fomu ya msingi inayoweza kunakiliwa (CSV yenye kichwa)
- 4.3 4.3 Ingiza tu safuwima unazohitaji
- 4.4 4.4 Badilisha tarehe na aina wakati wa kuingiza
- 4.5 4.5 Kwa faili zilizo na tab (TSV)
- 4.6 4.6 Boresha utendaji zaidi (kwa data kubwa)
- 4.7 ✔ Fomu inayopendekezwa kwa vitendo
- 5 5. Sababu 4 Kuu za KUSHINDIKIKA kwa INFILE (Sehemu Muhimu Zaidi)
- 6 6. Ingiza kupitia GUI (Workbench / phpMyAdmin)
- 7 7. Troubleshooting (By Error: Cause → Fastest Fix)
- 8 8. Mbinu za Maisha Halisi kwa Seti za Data Kubwa (Uendeshaji Usio na Hitilafu)
- 8.1 8.1 Gawanya faili na ulete kwa hatua
- 8.2 8.2 Zima kwa muda faharasa na funguo za nje
- 8.3 8.3 Dhibiti autocommit (kuongeza kasi)
- 8.4 8.4 Mipangilio inayopendekezwa kwa upakiaji wa wingi
- 8.5 8.5 Ongeza muda wa kumaliza
- 8.6 8.6 Mkakati wa jedwali la awali (mchakato salama)
- 8.7 ✔ Muundo thabiti zaidi wa maisha halisi
- 8.8 ✔ Hitimisho kwa data kubwa
- 9 9. FAQ (Maswali ya Kawaida)
- 9.1 Q1. Je, naweza kuleta safu maalum kutoka CSV?
- 9.2 Q2. Nifanyeje seli tupu kuwa NULL?
- 9.3 Q3. Nifanyeje kuruka safu ya kichwa?
- 9.4 Q4. Nifanyeje kuthibitisha matokeo ya uingizaji?
- 9.5 Q5. Ni njia gani ni ya haraka zaidi?
- 9.6 Q6. Ninapata kosa la mwisho wa mstari kwenye Windows
- 9.7 Q7. Ninapata kosa la secure_file_priv
- 9.8 ✔ Muhtasari wa FAQ
- 10 10. Muhtasari
1. Unachoweza Kufanya katika Makala Hii
Watu wengi wanaotafuta “Uingizaji wa data ya MySQL” wako katika hali ambapo wanataka:
- “rejesha faili .sql”
- “ingiza CSV”
- “inakoma na hitilafu”
- “haiendi katika Workbench au phpMyAdmin”
Kwa maneno mengine, unataka ufumbuzi unaoweza kutumia sasa hivi.
Kwanza, hapa kuna “njia za mafanikio” fupi kulingana na lengo.
🔹 Amri ya haraka zaidi ya kuingiza faili ya SQL (.sql)
Kwa urejeshaji wa nakala ya akiba au uhamisho wa seva, hii ndiyo ya haraka zaidi.
mysql -u username -p database_name < backup.sql
Mambo ya kuangalia kabla ya kuanza
- Je, hifadhidata lengwa ipo?
- Je, mtumiaji anayeunganisha ana ruhusa za DB lengwa?
- Usimbaji wa faili ya SQL (kwa kawaida UTF-8)
Kama hifadhidata bado haijaundwa:
CREATE DATABASE example_db;
🔹 Njia ya haraka zaidi ya kuingiza faili ya CSV (inapendekezwa)
Kwa kuingiza data kubwa haraka, LOAD DATA ni bora.
LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(id, name, @age)
SET age = NULLIF(@age,'');
Vidokezo Muhimu
- Mwisho wa mistari ya Windows →
'\r\n' - Ikiwa kuna safu ya kichwa →
IGNORE 1 LINES - Badilisha mistari tupu kuwa NULL →
NULLIF() - Mazingira mengi yanahitaji LOCAL (imeelezwa baadaye)
🔹 Ikiwa unataka kuingiza kupitia GUI
MySQL Workbench
- Seva → Uingizaji wa Data → chagua faili → endesha
phpMyAdmin
- Chagua DB lengwa → Ingiza → chagua faili → endesha
⚠ Hata hivyo, kwa faili kubwa na usimamizi wa hitilafu unaoaminika, CLI (mstari wa amri) ni thabiti zaidi.
🔹 Vitu 3 vya lazima kuangalia kabla ya kuingiza
1. Mseti wa herufi (muhimu zaidi)
SHOW VARIABLES LIKE 'character_set%';
Inapendekezwa: utf8mb4
2. Mipangilio inayosababisha hitilafu za INFILE
SHOW VARIABLES LIKE 'local_infile';
SHOW VARIABLES LIKE 'secure_file_priv';
3. Ukaguzi wa ruhusa
SHOW GRANTS FOR 'user'@'localhost';
✔ Nini kifuatacho katika makala hii
- Njia za kina za kuingiza faili za SQL
- Mbinu za kiutendaji za kuingiza CSV
- Uchambuzi kamili wa kwanini INFILE inashindwa
- Marekebisho ya haraka kulingana na aina ya hitilafu
- Mbinu za ulimwengu halisi kwa seti kubwa za data

2. Aina za Uingizaji wa MySQL na Wakati wa Kutumia Kila Moja
Kuna njia nyingi za kuingiza kwenye MySQL, lakini chaguo bora linategemea hali yako ya matumizi.
Ukielewa hili kwa usahihi, unaweza kuepuka matatizo yasiyohitajika.
2.1 Wakati wa kuingiza dump ya SQL (.sql)
Matumizi ya kawaida
- Kurudisha kutoka nakala ya akiba
- Uhamisho wa seva
- Kutumia data ya uzalishaji kwenye mazingira ya maendeleo
- Kuingiza tena data iliyotolewa na
mysqldump
Sifa
- Hurejesha muundo wote wa jedwali + data
- Urejeshaji wa juu
- Inaweza kujumuisha miamala
- Kwa ujumla chaguo salama zaidi
Mbinu za Kawaida
mysql -u user -p dbname < dump.sql
Au ndani ya MySQL:
SOURCE /path/to/dump.sql;
Bora kwa
- Urejeshaji kamili wa DB iliyopo
- Kujenga upya mazingira ya uzalishaji
- Upakiaji wa data kwa mazingira ya CI/CD
2.2 Wakati wa kuingiza CSV / TSV
Matumizi ya kawaida
- Kupokea data kutoka mifumo ya nje
- Kuingiza data ya Excel
- Usindikaji wa ETL
- Kusasisha meza maalum pekee
Sifa
- Inapakia data tu (schema lazima ipo kando)
- Haraka (
LOAD DATAni haraka sana) - Inaruhusu mantiki ya ubadilishaji wakati wa uingizaji
Mbinu ya Kawaida
LOAD DATA LOCAL INFILE 'file.csv'
INTO TABLE table_name
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';
Bora kwa
- Kazi za batch zilizopangwa
- Uunganishaji wa data
- Uingizaji wa kasi ya juu wa safu nyingi
2.3 Wakati wa kutumia zana za GUI
Zana za kawaida:
- MySQL Workbench
- phpMyAdmin
Sifa
- Uendeshaji wa kiintuitivu
- Rafiki kwa wanaoanza
- Inafaa kwa seti ndogo za data
Tahadhari
- Mipaka ya upakiaji (phpMyAdmin)
- Muda wa kusimamisha
- Haina uthabiti na data kubwa
- Gumu kuchambua hitilafu
2.4 Ulinganisho kwa njia (mtazamo wa vitendo)
| Method | Speed | Stability | Large-file support | Error analysis | Recommendation |
|---|---|---|---|---|---|
| mysql command | ◎ | ◎ | ◎ | ◎ | ★★★★★ |
| LOAD DATA | ◎ | ○ | ◎ | ○ | ★★★★★ |
| Workbench | ○ | ○ | △ | △ | ★★★ |
| phpMyAdmin | △ | △ | × | △ | ★★ |
✔ Mapendekezo yanayopendekezwa katika kazi halisi
- Urejeshaji wa nakala ya akiba → amri ya mysql
- Uingizaji wa CSV wa kasi kubwa → LOAD DATA LOCAL INFILE
- Kazi ndogo, moja tu → GUI
Ikiwa huna uhakika, kuchagua CLI (mstari wa amri) ni chaguo la kudumu zaidi.
3. Kuingiza Faili la SQL (Njia ya Haraka kwa Mafanikio)
Kuingiza faili la .sql ni njia ya kawaida zaidi kwa urejeshaji wa nakala za akiba na uhamisho wa seva.
Hapa, lengo ni “kufanikiwa haraka iwezekanavyo,” hivyo tutazingatia hatua za vitendo zinazotumika katika kazi halisi.
3.1 Urejeshaji katika mstari mmoja (njia ya kawaida zaidi)
Hii ndiyo njia ya kuaminika zaidi na ya haraka zaidi.
mysql -u username -p database_name < backup.sql
Baada ya kuifanya, utaulizwa nenosiri.
✔ Ukaguzi wa awali (kuzuia kushindwa)
① Je, hifadhidata ipo?
SHOW DATABASES;
Ikiwa haipo:
CREATE DATABASE example_db;
② Je, mtumiaji ana ruhusa?
SHOW GRANTS FOR 'user'@'localhost';
Ikiwa ruhusa hazipo:
GRANT ALL PRIVILEGES ON example_db.* TO 'user'@'localhost';
FLUSH PRIVILEGES;
③ Usimbaji wa faili
Kwa kawaida ni UTF-8.
Ikiwa unaona herufi zilizochanganyikiwa, eleza wazi.
mysql --default-character-set=utf8mb4 -u user -p dbname < backup.sql
3.2 Endesha kutoka ndani ya MySQL (amri ya SOURCE)
Njia hii inafanya kazi baada ya kuingia kwenye MySQL.
mysql -u user -p
USE example_db;
SOURCE /path/to/backup.sql;
Inapofaa
- Unapohitaji kuendesha sehemu tu ya faili la SQL
- Unapohitaji kutambua eneo sahihi la kosa
- Unapohitaji kuthibitisha kwa macho logi ya utekelezaji
3.3 Makosa ya kawaida na marekebisho
❌ KOSA 1049: Hifadhidata haijulikani
→ Hifadhidata haipo
→ Endesha CREATE DATABASE
❌ KOSA 1045: Ufikiaji umekataliwa
→ Ruhusa hazitoshi
→ Angalia kwa SHOW GRANTS
❌ Inasimama katikati / eneo la kosa halijulikani
Suluhisha:
- Angalia mwanzo na mwisho wa faili
head backup.sql tail backup.sql
- Angalia mistari kabla ya kosa
- Kama faili ni kubwa, igawanye na uendelee kuifanya kwa sehemu
split -l 10000 backup.sql part_
3.4 Vidokezo vya kusimamia uingizaji mkubwa wa SQL
① Angalia mipangilio ya muamala
Angalia kama SET autocommit=0; imejumuishwa
② Ikiwa vikwazo vya funguo za nje ndizo tatizo
SET FOREIGN_KEY_CHECKS=0;
-- import
SET FOREIGN_KEY_CHECKS=1;
③ Angalia hali ya SQL
SELECT @@sql_mode;
Hali ya mkali inaweza kuathiri uingizaji.
✔ Mapendekezo ya vitendo
- Urejeshaji wa uzalishaji → amri ya mysql
- Uchunguzi → SOURCE
- Faili kubwa → CLI + fikiria kugawanya
4. Uingizaji wa CSV (Jambo Muhimu Zaidi: Haraka zaidi kwa LOAD DATA)
Wakati wa kuingiza data ya CSV, njia ya haraka na ya vitendo zaidi ni LOAD DATA.
Kwa seti kubwa za data, ni haraka sana ikilinganishwa na tamko la INSERT.
Hapa, tutatoa muundo sahihi wa “nakili-bandika na uendeshe” na kuangazia pointi za makosa ya kawaida.
4.1 Kwanza: Mahitaji ya CSV
Kabla ya kuingiza, hakikisha unakagua yafuatayo.
✔ Kitenganishi
- Koma
, - Tab
\t - Nukta ya semikolo
;(ya kawaida katika data za nje)
✔ Herufi ya nukuu
- Iwapo thamani zimefungwa kama
"value"kwa nukuu mbili
✔ Mwisho wa mistari
- Linux / Mac →
\n - Windows →
\r\n
✔ Seti ya herufi / usimbaji
- Inashauriwa:
utf8mb4 - CSV iliyotengenezwa kwenye Windows inaweza kuwa Shift-JIS
- UTF-8 na BOM inaweza kusababisha makosa wakati mwingine
Mfano wa ukaguzi:
file -i example.csv
4.2 Fomu ya msingi inayoweza kunakiliwa (CSV yenye kichwa)
LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(id, name, @age)
SET age = NULLIF(@age,'');
Maana ya kila chaguo
LOCALInasoma faili kutoka upande wa mteja (inahitajika katika mazingira mengi)IGNORE 1 LINESInapuuzia safu ya kichwa@ageKigezo cha muda kinachotumika kubadilisha thamani kabla ya kuhifadhiNULLIF()Hubadilisha mistari tupu kuwa NULL
4.3 Ingiza tu safuwima unazohitaji
Kama CSV ina safuwima zisizo za lazima:
LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(id, @dummy, age);
Panga safuwima zisizohitajika kwa @dummy.
4.4 Badilisha tarehe na aina wakati wa kuingiza
Mfano: badilisha MM/DD/YYYY → muundo wa MySQL
LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(@date_col, name)
SET date_col = STR_TO_DATE(@date_col, '%m/%d/%Y');
4.5 Kwa faili zilizo na tab (TSV)
FIELDS TERMINATED BY '\t'
4.6 Boresha utendaji zaidi (kwa data kubwa)
Zima faharasa kwa muda
ALTER TABLE example_table DISABLE KEYS;
-- Run LOAD DATA
ALTER TABLE example_table ENABLE KEYS;
Zima funguo za nje kwa muda
SET FOREIGN_KEY_CHECKS=0;
-- Run LOAD DATA
SET FOREIGN_KEY_CHECKS=1;
Kwa nini LOCAL mara nyingi inahitajika
LOAD DATA INFILE→ inasoma faili upande wa sevaLOAD DATA LOCAL INFILE→ inasoma faili upande wa mteja
Katika mazingira mengi, kutumia LOCAL kuna kiwango cha mafanikio cha juu.
✔ Fomu inayopendekezwa kwa vitendo
Katika hali nyingi:
LOAD DATA LOCAL INFILE
+ explicit delimiter
+ explicit line endings
+ IGNORE 1 LINES
+ type conversion
Hii ndiyo njia thabiti zaidi.
5. Sababu 4 Kuu za KUSHINDIKIKA kwa INFILE (Sehemu Muhimu Zaidi)
Shindwa nyingi za LOAD DATA INFILE husababishwa na mipangilio, ruhusa, au kutokuelewa mahali pa chanzo.
Ukielewa hili, unaweza kutatua makosa mengi mara moja.
5.1 Tofauti kati ya INFILE na LOCAL INFILE
Hii ndiyo dhana ya msingi muhimu.
| Command | Where it reads from | Typical use |
|---|---|---|
LOAD DATA INFILE | File on the server | A fixed path on the server |
LOAD DATA LOCAL INFILE | File on the client | A CSV on your local PC |
Uelewa usio sahihi wa kawaida
- Kujaribu kusoma faili ya PC ya ndani kwa
INFILEna kushindwa - Faili haipo kwenye seva
✔ Kanuni ya haraka ya msingi
- CSV kwenye PC yako →
LOCAL - CSV iliyowekwa kwenye seva →
INFILE
Kama huna uhakika, kutumia LOCAL ndicho chaguo salama zaidi.
5.2 local_infile imezimwa (sababu ya KOSA 1148)
Kosa la mfano:
ERROR 1148 (42000): The used command is not allowed with this MySQL version
Sababu:
local_infile imezimwa
✔ Angalia mipangilio ya sasa
SHOW VARIABLES LIKE 'local_infile';
✔ Iwezeshwa wakati wa kuunganisha (kwa upande wa mteja)
mysql --local-infile=1 -u user -p
✔ Iwezeshwa daima (faili la usanidi)
Ongeza kwenye my.cnf au my.ini:
[mysqld]
local_infile=1
Lazima uanzishe upya seva.
5.3 Kizuizi cha secure_file_priv
Hii hutokea wakati wa kutumia LOAD DATA INFILE (bila LOCAL).
Angalia:
SHOW VARIABLES LIKE 'secure_file_priv';
Matokeo ya mfano
/var/lib/mysql-files/
→ Unaweza kusoma faili ndani ya saraka hii pekee.
✔ Suluhisha
- Hamisha CSV kwenye saraka iliyoruhusiwa
- Au tumia
LOCAL
5.4 Ruhusa zisitoshelezi (ruhusa wa FILE / ruhusa za OS)
Kosa la mfano:
ERROR 1045: Access denied
Angalia:
SHOW GRANTS FOR 'user'@'localhost';
✔ Ruhusa inayohitajika
GRANT FILE ON *.* TO 'user'@'localhost';
※ Kwa usalama, fanya kazi na ruhusa chache zaidi iwezekanavyo.
5.5 Ufafanuzi usio sahihi wa njia
- Tumia njia kamili, si njia ya j relative
- Kwenye Windows,
C:/path/file.csvinashauriwa - Mstari wa mbele (forward slash) ni salama zaidi kuliko backslash
✔ Mtiririko wa haraka wa utatuzi wa matatizo ya INFILE
- Je, umeongeza
LOCAL? SHOW VARIABLES LIKE 'local_infile';SHOW VARIABLES LIKE 'secure_file_priv';- Angalia ruhusa (SHOW GRANTS)
- Angalia njia (njia kamili)
Kwa mpangilio huu, unaweza kutatua hali nyingi.
6. Ingiza kupitia GUI (Workbench / phpMyAdmin)
The command line ni thabiti zaidi, lakini kuna hali ambapo unataka kutumia zana za GUI.
Hapa, tutazingatia pointi za kawaida ambapo watu wanakamatika katika kazi halisi.
6.1 Import with MySQL Workbench
Import an SQL file (backup restore)
- Launch Workbench
- Menu → Server → Data Import
- Select “Import from Self-Contained File”
- Select the
.sqlfile - Select the Target Schema (database)
- Click “Start Import”
Import CSV (per table)
- Right-click the target table
- Select Table Data Import Wizard
- Select the CSV file
- Set delimiter and whether there is a header
- Run
⚠ Common reasons Workbench gets stuck
- Large files (hundreds of MB or more)
- Timeouts
- Encoding mismatch
secure_file_privrestrictions
👉 Kwa faili kubwa au mazingira ya uzalishaji, CLI inashauriwa.
6.2 Import with phpMyAdmin
Steps
- Select the target database
- Open the “Import” tab
- Choose a file
- Select the format (SQL / CSV)
- Run
⚠ phpMyAdmin limitations
① Upload size limit
upload_max_filesize
post_max_size
Large files will fail.
② Timeout
max_execution_timeLong-running imports may stop mid-way.
③ Out of memory
memory_limit6.3 When you should use GUI
- Small datasets (a few MB)
- Development environments
- Temporary one-off work
6.4 When you should use CLI (recommended)
- Production environments
- Tens of MB or more
- Large CSV imports
- When you need error analysis
- Server-to-server migrations
✔ Practical conclusion
GUI is “easy,” but
CLI is overwhelmingly better for stability, reproducibility, and large-file handling.
For troubleshooting, learning CLI operations is ultimately recommended.
7. Troubleshooting (By Error: Cause → Fastest Fix)
Most MySQL import errors are highly patterned.
Here, we’ll organize them in the order “cause → first action → verification command.”
7.1 ERROR 1148 (42000)
The used command is not allowed with this MySQL version
🔎 Cause
LOAD DATA LOCAL INFILEis disabledlocal_infileis OFF
✅ Fastest fix
① Check current settings
SHOW VARIABLES LIKE 'local_infile';
② Enable when connecting (client-side)
mysql --local-infile=1 -u user -p
③ Enable permanently (if needed)
[mysqld]
local_infile=1
→ Restart MySQL
7.2 ERROR 1366
Incorrect string value
🔎 Cause
- Encoding mismatch
- Inconsistency between utf8 and utf8mb4
- Shift-JIS mixed in
✅ Fastest fix
① Check current character set
SHOW VARIABLES LIKE 'character_set%';
② Convert table to utf8mb4
ALTER TABLE example_table CONVERT TO CHARACTER SET utf8mb4;
③ Specify it explicitly at import time
mysql --default-character-set=utf8mb4 -u user -p db < file.sql
7.3 ERROR 1062
Duplicate entry
🔎 Cause
- Duplicate primary keys
- UNIQUE constraint violation
✅ Fix options
Option 1: Ignore duplicates
LOAD DATA LOCAL INFILE 'file.csv'
INTO TABLE example_table
IGNORE;
Option 2: Update on duplicate
INSERT INTO example_table (id, name)
VALUES (1,'John')
ON DUPLICATE KEY UPDATE name=VALUES(name);
Option 3: Use a staging table
CREATE TEMPORARY TABLE temp LIKE example_table;
-- LOAD into temp first
INSERT INTO example_table
SELECT * FROM temp;
7.4 ERROR 1045
Access denied for user
🔎 Cause
- Insufficient DB privileges
- Insufficient FILE privilege
- Insufficient OS permissions for the path
✅ Check
SHOW GRANTS FOR 'user'@'localhost';
✅ Example required privileges
GRANT ALL PRIVILEGES ON example_db.* TO 'user'@'localhost';
FLUSH PRIVILEGES;
※ Be cautious when granting FILE privilege.
7.5 It stops mid-way on large files
🔎 Cause
- Muda wa kumaliza
- Kumbukumbu imeisha
- Vizingiti vya PHP (phpMyAdmin)
✅ Hatua za haraka zaidi
Ongeza muda wa kumaliza
SET GLOBAL net_read_timeout=600;
SET GLOBAL net_write_timeout=600;
Gawanya faili
split -l 100000 large.csv part_
✔ Mtiririko wa utatuzi wa hitilafu (haraka zaidi)
- Angalia usimbaji
- Angalia
local_infile - Angalia
secure_file_priv - Angalia ruhusa
- Angalia mwisho wa mistari (
\n/\r\n)
Kwa mpangilio huu, unaweza kutatua matatizo mengi.
8. Mbinu za Maisha Halisi kwa Seti za Data Kubwa (Uendeshaji Usio na Hitilafu)
Wakati wa kuleta mamia maelfu hadi mamilioni ya safu,
mbinu za kawaida zinaweza kuwa polepole, kusimama, au kuvunjika.
Hapa kuna mbinu thabiti ambazo hutumika sana katika uzalishaji.
8.1 Gawanya faili na ulete kwa hatua
Kuchukua CSV/SQL kubwa kwa jaribio moja kunaweza kusababisha matatizo ya kumbukumbu na muda wa kumaliza.
✔ Linux / Mac
split -l 100000 large.csv part_
→ Gawanya katika mistari 100,000 kwa sehemu
✔ Windows (mfano wa PowerShell)
Get-Content large.csv -TotalCount 100000 > part_1.csv
✔ Faida za uingizaji wa hatua
- Rahisi kurudia baada ya kushindwa kwa sehemu
- Rahisi kubaini mahali pa hitilafu
- Mzigo wa seva thabiti zaidi
8.2 Zima kwa muda faharasa na funguo za nje
Wakati wa uingizaji, masasisho ya faharasa mara nyingi huwa kiwambo.
✔ Zima kwa muda faharasa
ALTER TABLE example_table DISABLE KEYS;
-- LOAD DATA
ALTER TABLE example_table ENABLE KEYS;
※ Kimsingi kwa MyISAM. Athari ndogo kwa InnoDB.
✔ Zima funguo za nje
SET FOREIGN_KEY_CHECKS=0;
-- import
SET FOREIGN_KEY_CHECKS=1;
8.3 Dhibiti autocommit (kuongeza kasi)
SET autocommit=0;
-- LOAD DATA
COMMIT;
SET autocommit=1;
8.4 Mipangilio inayopendekezwa kwa upakiaji wa wingi
SET UNIQUE_CHECKS=0;
SET FOREIGN_KEY_CHECKS=0;
SET AUTOCOMMIT=0;
Baada ya upakiaji:
COMMIT;
SET UNIQUE_CHECKS=1;
SET FOREIGN_KEY_CHECKS=1;
SET AUTOCOMMIT=1;
⚠ Tumia kwa tahadhari katika uzalishaji.
8.5 Ongeza muda wa kumaliza
SET GLOBAL net_read_timeout=600;
SET GLOBAL net_write_timeout=600;
8.6 Mkakati wa jedwali la awali (mchakato salama)
Badala ya kuleta moja kwa moja kwenye jedwali la uzalishaji, tumia jedwali la uthibitishaji kwanza.
CREATE TABLE staging LIKE example_table;
LOAD DATA LOCAL INFILE 'file.csv' INTO TABLE staging;
Baada ya uthibitishaji:
INSERT INTO example_table
SELECT * FROM staging;
✔ Muundo thabiti zaidi wa maisha halisi
- Pakia kwenye jedwali la awali
- Angalia idadi ya safu
- Thibitisha vikwazo
- Tumia kwenye uzalishaji
- Hifadhi kumbukumbu
✔ Hitimisho kwa data kubwa
- Tumia CLI inapowezekana
- Gawanya uingizaji
- Pitisha kupitia jedwali la awali
- Zima vikwazo kwa muda
- Angalia kumbukumbu
Hii itafanya uingizaji kuwa thabiti hata kwa mamilioni ya safu.
9. FAQ (Maswali ya Kawaida)
Hapa kuna majibu ya haraka, ya vitendo kwa maswali yanayoulizwa mara kwa mara kuhusu uingizaji wa MySQL.
Q1. Je, naweza kuleta safu maalum kutoka CSV?
Ndiyo, unaweza.
Unaweza kuhusisha safu zisizo za lazima kwa kigezo (kama @dummy) na kuzipuuzia.
LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(id, @dummy, age);
Kama unataka safu maalum pekee, hakikisha kuainisha mpangilio wa safu waziwazi.
Q2. Nifanyeje seli tupu kuwa NULL?
Tumia NULLIF().
LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(name, @age)
SET age = NULLIF(@age,'');
Hii hubadilisha mistari tupu (”) kuwa NULL.
Q3. Nifanyeje kuruka safu ya kichwa?
IGNORE 1 LINES
Mfano:
LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
Q4. Nifanyeje kuthibitisha matokeo ya uingizaji?
✔ Angalia idadi ya safu
SELECT COUNT(*) FROM example_table;
✔ Angalia maonyo/kosa
Angalia maonyo ya MySQL:
SHOW WARNINGS;
✔ Mkakati wa jedwali la kusimamia (inapendekezwa)
Pakia kwenye jedwali la kusimamia kwanza, kisha lapply kwenye uzalishaji.
Q5. Ni njia gani ni ya haraka zaidi?
Hitimisho:
- CSV → LOAD DATA LOCAL INFILE (haraka zaidi)
- Urejeshaji wa nakala ya akiba → amri ya mysql
GUI ni rahisi kutumia, lakini CLI inashinda kwa kasi na uthabiti.
Q6. Ninapata kosa la mwisho wa mstari kwenye Windows
Ni kutokana na mwisho wa mistari.
Windows:
LINES TERMINATED BY '\r\n'
Linux / Mac:
LINES TERMINATED BY '\n'
Q7. Ninapata kosa la secure_file_priv
Angalia:
SHOW VARIABLES LIKE 'secure_file_priv';
Suluhisha:
- Weka CSV katika saraka iliyoruhusiwa
- Au tumia
LOCAL
✔ Muhtasari wa FAQ
- Ulinganisha safu →
@dummy - Ubadilishaji wa NULL →
NULLIF - Ruka kichwa →
IGNORE 1 LINES - Uingizaji wa kasi ya juu →
LOAD DATA - Vidokezo vya juu vilivyogongana →
local_infile/secure_file_priv/ encoding
10. Muhtasari
Uingizaji wa MySQL unaweza kuonekana mgumu mwanzoni, lakini
ukishatirikiwa kwa lengo, ni rahisi sana.
Hebu tuorodheshe njia fupi za mafanikio.
✔ Rudisha faili la SQL (.sql)
Haraka zaidi na thabiti zaidi:
mysql -u user -p dbname < backup.sql
- Angalia kama DB ipo
- Angalia ruhusa
- Pendekeza
utf8mb4kwa usimbaji
✔ Ingiza CSV (haraka)
Fomu ya msingi:
LOAD DATA LOCAL INFILE '/path/to/file.csv'
INTO TABLE table_name
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
Vidokezo muhimu:
- Mwisho wa mistari wa Windows →
\r\n - Mstari tupu →
NULLIF() - Ikiwa inashindwa, angalia
local_infile
✔ Utaratibu wa ukaguzi wa utatuzi wa matatizo
- Usimbaji (pendekeza utf8mb4)
SHOW VARIABLES LIKE 'local_infile';SHOW VARIABLES LIKE 'secure_file_priv';- Ruhusa (SHOW GRANTS)
- Mwisho wa mistari
Kwa mpangilio huu, unaweza kutatua matatizo mengi.
✔ Kanuni za dhahabu kwa seti kubwa za data
- Tumia CLI
- Gawanya uingizaji
- Pitia jedwali la kusimamia
- Zima kwa muda funguo za kigeni/vizuizi
- Angalia logi
✔ Hitimisho la mwisho
- Urejeshaji wa nakala ya akiba → amri ya mysql
- Uingizaji wa CSV wa kasi ya juu → LOAD DATA LOCAL INFILE
- Kazi ndogo za mara moja → GUI
Kama huna uhakika, kutumia CLI ndicho chaguo thabiti zaidi.
Kwa hili, sasa una seti kamili ya maarifa kwa ajili ya uingizaji wa MySQL.
Jaribu katika mazingira yako na jengea mtiririko wa kazi thabiti.


