Mwongozo wa Kuagiza MySQL: Ingiza Dump za SQL na CSV Haraka (LOAD DATA, Workbench, phpMyAdmin)

目次

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

MySQL data import workflow diagram showing SQL file, CSV file, LOAD DATA LOCAL INFILE, mysql command, and MySQL server process

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 DATA ni 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)

MethodSpeedStabilityLarge-file supportError analysisRecommendation
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:

  1. Angalia mwanzo na mwisho wa faili
    head backup.sql
    tail backup.sql
    
  1. Angalia mistari kabla ya kosa
  2. 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

  • LOCAL Inasoma faili kutoka upande wa mteja (inahitajika katika mazingira mengi)
  • IGNORE 1 LINES Inapuuzia safu ya kichwa
  • @age Kigezo cha muda kinachotumika kubadilisha thamani kabla ya kuhifadhi
  • NULLIF() 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 seva
  • LOAD 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.

CommandWhere it reads fromTypical use
LOAD DATA INFILEFile on the serverA fixed path on the server
LOAD DATA LOCAL INFILEFile on the clientA CSV on your local PC

Uelewa usio sahihi wa kawaida

  • Kujaribu kusoma faili ya PC ya ndani kwa INFILE na 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.csv inashauriwa
  • Mstari wa mbele (forward slash) ni salama zaidi kuliko backslash

✔ Mtiririko wa haraka wa utatuzi wa matatizo ya INFILE

  1. Je, umeongeza LOCAL ?
  2. SHOW VARIABLES LIKE 'local_infile';
  3. SHOW VARIABLES LIKE 'secure_file_priv';
  4. Angalia ruhusa (SHOW GRANTS)
  5. 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)

  1. Launch Workbench
  2. Menu → Server → Data Import
  3. Select “Import from Self-Contained File”
  4. Select the .sql file
  5. Select the Target Schema (database)
  6. Click “Start Import”

Import CSV (per table)

  1. Right-click the target table
  2. Select Table Data Import Wizard
  3. Select the CSV file
  4. Set delimiter and whether there is a header
  5. Run

⚠ Common reasons Workbench gets stuck

  • Large files (hundreds of MB or more)
  • Timeouts
  • Encoding mismatch
  • secure_file_priv restrictions

👉 Kwa faili kubwa au mazingira ya uzalishaji, CLI inashauriwa.

6.2 Import with phpMyAdmin

Steps

  1. Select the target database
  2. Open the “Import” tab
  3. Choose a file
  4. Select the format (SQL / CSV)
  5. Run

⚠ phpMyAdmin limitations

① Upload size limit

upload_max_filesize
post_max_size

Large files will fail.

② Timeout
max_execution_time

Long-running imports may stop mid-way.

③ Out of memory
memory_limit

6.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 INFILE is disabled
  • local_infile is 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)

  1. Angalia usimbaji
  2. Angalia local_infile
  3. Angalia secure_file_priv
  4. Angalia ruhusa
  5. 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

  1. Pakia kwenye jedwali la awali
  2. Angalia idadi ya safu
  3. Thibitisha vikwazo
  4. Tumia kwenye uzalishaji
  5. 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 utf8mb4 kwa 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

  1. Usimbaji (pendekeza utf8mb4)
  2. SHOW VARIABLES LIKE 'local_infile';
  3. SHOW VARIABLES LIKE 'secure_file_priv';
  4. Ruhusa (SHOW GRANTS)
  5. 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.