මගේ දත්ත ගබඩාවට sql.gz ගොනුවක් පටවන්නේ කෙසේද? (ආනයනය)


166

මම gzipped SQL ගොනුවක් කෙලින්ම mysql වෙත ආනයනය කිරීමට උත්සාහ කරමි. මෙය නිවැරදි මාර්ගයද?

mysql -uroot -ppassword mydb > myfile.sql.gz

16
ප්‍රශ්නයේ gzip පැත්ත නොසලකා හැරියත්, ඔබේ ඊතලය වැරදි දිශාවකට යොමු කරයි ...
මැට් ෆ්ලෙචර්

Answers:


264
zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database

>බොහෝ විට ඔබට අවශ්‍ය දේ නොවන ගොනුවට mysqlවිධානයේ ප්‍රතිදානය ලියනු ඇත . මීට අමතරව, මෙම විධානය මඟින් MySQL පරිශීලක "root" හි මුරපදය ඉල්ලා සිටිනු ඇත.stdoutmyfile.sql.gz


16
හොඳ ආරක්ෂක පුහුණුවක් ලෙස, මම මගේ මුරපදය විධාන රේඛාවට දමමි, මම එය ඉල්ලීමට mysql ට ඉඩ දෙමි.
මහාචාර්ය මොරියාර්ටි

10
හෝ ඊටත් වඩා හොඳ: ~/.my.cnfඅක්තපත්‍ර සමඟ සාදන්න . ;)
ජොෂි

7
Ro ප්‍රොෆ් ලෙස. මොරියාර්ටි පැහැදිලි කරයි, මුරපදය භාවිතා නොකිරීමට ඔබට විධානය වෙනස් කළ හැකිය zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database. අවසාන පරාමිතිය ඔබේ මුරපදය නොව ඔබ භාවිතා කිරීමට බලාපොරොත්තු වන දත්ත සමුදාය බව එය දැන ගනු ඇත.
bafromca

7
තරමක් නිවැරදි කිරීම සඳහා @ මහාචාර්ය මොරියාර්ටිගේ ප්‍රකාශය, හොඳ මුරපදයක් වනුයේ මගේ මුරපදය විධාන රේඛාවට ඇතුළත් නොකිරීමයි (එය ඉතිහාසයේ ගබඩා වනු ඇත, නැතහොත් ඔබේ උරහිසට ඉහළින් දැකිය හැකිය), සහ MySQL විසින් එය ඉල්ලා සිටීමට ඉඩ දෙන්න. -P ධජය පමණක් මුරපදය සඳහා MySQL විමසනු ඇත.
ජෝර්ජ්

4
දත්ත සමුදාය සම්පීඩනය කර තබන දෙයක් සඳහා +1
දිමිත්‍රි ඩී බී

87

Sql.gz ගොනුවක් ආයාත කරන අතරතුර ප්‍රගති තීරුවක් පෙන්වීමට pv, පහත සඳහන් දෑ බාගත කර භාවිතා කරන්න:

pv mydump.sql.gz | gunzip | mysql -u root -p <database name>

CentOS / RHEL හි, ඔබට pv සමඟ ස්ථාපනය කළ හැකිය yum install pv.

ඩේබියන් / උබුන්ටු වල apt-get install pv.

MAC හි, brew install pv


2
pvඋබුන්ටු ගබඩාවල ද ඇති බව පෙනේ (අවම වශයෙන් එය LTS 12.04 කින්), නමුත් නැවත sudo apt-get install pvඑය ලබා ගැනීම සඳහා ඔබ කළ යුතුය. ස්තූතියි බන්ජර්, මෙය විශාල දත්ත සමුදා ආනයනය සඳහා පරිපූර්ණයි!
toon81

මට pv mydump.sql.gz | ධාවනය කිරීමට සිදුවිය gunzip | mysql -u root my_database_name. ඒ මම වගු ආනයනය කරන නිසා සහ මගේ මූල පරිශීලකයා සඳහා මුරපදයක් මා සතුව නොමැති නිසාය
ක්‍රිස්ටියානෝ මෙන්ඩෝනියා

MAC හි,brew install pv
ලකුණු

56

සරලම ක්‍රමය නම් ආනයනය කිරීමට පෙර දත්ත සමුදා ගොනුව මුදා හැරීමයි. RoProf විසින් සඳහන් කළ පරිදි. මොරියාර්ටි ඔබ විධානයෙහි මුරපදය සඳහන් නොකළ යුතුය (ඔබ මුරපදය ඉල්ලා සිටිනු ඇත). වෙබ්චීට් ෂීට් වෙතින් ලබාගත් මෙම විධානය එකවර දත්ත සමුදාය මුදා හරිනු ඇත:

gunzip < myfile.sql.gz | mysql -u root -p mydb

1
එසේම, ආනයනය කිරීමට පෙර mydb නිර්මාණය කළ යුතුය. මෙය ඔබ වෙනුවෙන් db නිර්මාණය නොකරයි.
සිද්ධාර්ථ

gunzip10GB සම්පීඩිත ගොනුවක මගේ නල මාර්ගයෙන් මගේ ආනයනය කැටි වී ඇති බව මට පෙනී ගියේය. එය මතක අවහිරතා හෝ වෙනත් දෙයක් නිසා දැයි විශ්වාස නැත, නමුත් අනාගතයේදී වරකට එක් පියවරක් කිරීමේ පැත්තෙන් මම වැරදියට සිතමි.
රයන් ටක්

@RyanTuck එය මේ ආකාරයේ ක්‍රියාවලීන්ගේ සීමාවන් තල්ලු කරයි :)
icc97

1
Id සිද්ධාර්ථ එය වර්ග ඩම්ප් ගොනුව මත රඳා පවතී. සමහර විට ඒවාට දත්ත සමුදා ප්‍රකාශ සෑදීම ඇතුළත් වේ.
රූබි

එය අර්ථවත් කරයි.
සිද්ධාර්ථ


5

මැකෝස් මත, මම මෙය භාවිතා කළෙමි:

zcat < [Database].sql.gz | mysql -u root -p [Database Name in MySQL]

ඔබගේ මුරපදය ඇතුළත් කරන්න, සහ වොයිලා!


4

SQL ගොනුවේ කිසියම් USE ප්‍රකාශයක් තිබේදැයි පරීක්ෂා කරන්න. විධාන රේඛාවේ දත්ත සමුදාය නියම කිරීමෙන් SQL ගොනුව තුළ වෙනත් ගමනාන්තයක් නියම කර ඇත්නම් දත්ත එතැනින් අවසන් වන බවට සහතික නොවේ.


2
ඔබට අවශ්‍ය වන්නේ විධානය එලෙසම දිගු කිරීමයි : pv mydump.sql.gz | gunzip | mysql -u root -p your_database. පිළිගත් පිළිතුර මෙම ප්‍රවේශය භාවිතා කරයි.
bafromca

1

සඳහා bzip2 සම්පීඩිත ගොනු (.sql.bz2), භාවිතා කරන්න:

bzcat <file> | mysql -u <user> -p <database>

හෝ

pv <file> | bunzip2 | mysql -u <user> -p <database>

ප්‍රගති තීරුව බැලීමට.


0

ඔබට විධාන -c, --stdout, --to-stdoutවිකල්පය භාවිතා කළ හැකියgunzip

උදාහරණයක් වශයෙන්:

gunzip -c file.sql.gz | mysql -u root -p database

0

.Sql.qz විධානයෙන් අපනයනය කිරීම: -

mysqldump -u පරිශීලක නාමය -p දත්ත සමුදාය | gzip> database.sql.gz

.Sql.qz ගොනු විධානය ආයාත කිරීම සඳහා: -

gunzip <database.sql.gz | mysql -u usrname -p newdatabase

ශයිලේෂ් තාපා


0

MySQL සමඟ user_data ජනගහනය කළ යුතු යැයි කියමු, මෙය උත්සාහ කරන්න:

export DEBIAN_FRONTEND=noninteractive \
    apt-get update -yq
    dpkg -l | grep mysql-server || (echo "Installing MySQL..." \
    && apt-get install -yq mysql-server \
    && echo -e "\n[mysqld]\nbind-address=0.0.0.0\nskip-name-resolve=1" | tee -a /etc/mysql/my.cnf \
    && aws s3 cp --quiet s3://your-bucket/mysqldump_all_databases.sql.gz - | zcat | mysql -uroot\
    && systemctl restart mysql)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.