⑴ 用shell命令解決XAMPP資料庫導入文件限制
經常折騰
WordPress
的朋友通常都會搭建一個本地環境,調試修改完了再發布到線上,至於如何在本地安裝
WordPress,這個可以參考我之前寫的一篇《輕松10步本地安裝WordPress(圖)》文章,這篇文章中推薦使用
XAMPP
這個集
Apache
+
Mysql
+
PHP
於一身的套裝軟體,今天的話題同樣也是圍繞
XAMPP。
為了真實還原線上環境,我們會把線上的資料庫備份下來,用
XAMPP
的
phpMyAdmin
導入到本地,當然,如果數據量不大是一切正常的,但如果終於有一天,你的數據量積累到一定的程度,XAMPP
的
phpMyAdmin
就會有文件大小限制、上傳超時等各種問題,有一種解決辦法是修改配置文件,但是我今天要推薦的是另一種方法
——
shell
命令,更加快速、直接、有效地導入資料庫,可以從根本上避免文件大小限制、上傳超時等問題。步驟如下:
第一,打開
CMD。開始
->
運行
->
CMD。
第二,進入
mysql
目錄。
d:
cd
d:xamppmysqlbin
第三,啟動
mysql,輸入用戶名及密碼。
mysql
-u
wper
-p
Enter
password:
*******
第四,選擇對應的資料庫名。
mysql>
use
wp
第五,設置
utf8
編碼。
mysql>
set
names
utf8;
第六,選擇
sql
資料庫文件路徑並導入。
mysql>source
d:wangeim.sql
以上步驟詳請對應如下圖:
有圖有文有解說,是不是很簡單呢?try
一
try
吧,你也可以的。
文章來源:wange.im
⑵ shell 怎麼造mysql 的大量數據
若要將大量的數據值插入到資料庫的一個或多個表中,使用insert into語句來實現將是一項無聊的工作。
1、LOAD DATA通過讀取本地文件系統上的文件,可以將大量數據添加到資料庫中。
mysql> LOAD DATA INFILE 『datafile.txt』 INTO TABLE db2.table_name;
mysql> LOAD DATA INFILE 『datafile.txt』 INTO TABLE db2.table_name FIELDS TERMINATED BY 『,』 OPTIONALLY ENCLOSED BY 『」『;
mysql> load data infile 「file.txt」 into table table_name fields terminated by 『\t』 (sid,name);
2、還有一個mysqlimport命令可以批量增加,mysqlimport直接從文件讀取批量數據。它相當於LOAD DATA語句的一個介面。
mysqlimport可以自動生成一個LOAD DATA語句,該語句把filename.txt文件中的數據裝入table_name表中。
mysqlimport根據文件名導入表名,即將文件名第一個圓點前的所有字元作為表名。例如,文件class.txt被裝入class表中。
例如:
mysqlimport -L -uroot -proot db01 table_name.txt;
mysqlimport -local table_name filename.txt;
3、datafile.txt內容:
「1」,」a string」,」100.20″
「2」,」a string containing a , comma」,」102.20″
「3」,」a string containing a \」 quote」,」102.20″
「4」,」a string containing a \」, quote and comma」,」102.20″
4、假如你有x表,導入了一個y表,將y表數據插入x表:
insert into x select * from y;
⑶ 怎麼向redis導入大量數據
具體實現步驟如下:1.新建一個文本文件,包含redis命令如果有了原始數據,其實構造這個文件並不難,譬如shell,python都可以2.將這些命令轉化成RedisProtocol。因為Redis管道功能支持的是RedisProtocol,而不是直接的Redis命令。如何轉化,可參考後面的腳本。3.利用管道插入catdata.txt|redis-cli--pipeShellVSRedispipe下面通過測試來具體看看Shell批量導入和Redispipe之間的效率。測試思路:分別通過shell腳本和Redispipe向資料庫中插入10萬相同數據,查看各自所花費的時間。Shell腳本如下:#!/bin/bashfor((i=0;i>redis.logdone每次插入的值都是helloworld,但鍵不同,name0,name1name99999。RedispipeRedispipe會稍微麻煩一點1>首先構造redis命令的文本文件在這里,我選用了python#!/usr/bin/pythonforiinrange(100000):print'setname'+str(i),'helloworld'#python1.py>redis_commands.txt#head-2redis_commands.>將這些命令轉化成RedisProtocol在這里,我利用了github上一個shell腳本,#!/bin/bashwhilereadCMD;do#eachcommandbeginswith*{numberargumentsincommand}\r\nXS=($CMD);printf"*${#XS[@]}\r\n"#foreachargument,weappend${length}\r\n{argument}\r\nforXin$CMD;doprintf"\$${#X}\r\n$X\r\n";donedoneredis_data.txt#head-7redis_data.txt*3$3set$5name0$10helloworld至此,數據構造完畢。測試結果
⑷ shell往mysql資料庫導入新
本文介紹 MySQL 8.0 shell 子模塊 Util 的兩個導入特性 importTable/import_table(JS和python 版本的命名差異)、importJson/import_json的使用方法。
其中 import_table 是通過傳統 MySQL 協議來通信,Import_json 是通過 X 插件協議來通信。MySQL 一直以來提供導入文件 SQL 命令 load data infile(單線程)以及對應的可執行文件 mysqlimport(多線程)。
比如我導入 100W 行示例數據到表 ytt.tl1,花了 24 秒。這個已經是 MySQL 默認導入來的最快的。分析那我們現在看下 mysqlimport 工具的升級版,mysqlshell 的 util 工具集。
使用這兩個工具之前,必須得臨時開啟 local_infile 選項。1. import_table建立 3306 埠的新連接我這里切換為 python 模式清空掉示例表 Ytt.tl1import_table 有兩個參數,第一個參數定義導入文件的路徑,第二個定義相關選項,比如導入的格式,並發的數量等。定義文件路徑(參數1)定義選項(參數2)執行導入:只花了不到 17 秒,比傳統 mysqlimport 快了不少。
我們上面指定了顯式指定了欄位分隔符,那有沒有已經定義好的組合格式呢? 答案是有的,選項 dialect 可以指定以下格式:csv,tsv,json,csv-unix那麼上面的導入,我們可以更簡單,改下變數 y_options1 的定義導入時間差不多。這里要說明下,dialect 選項的優先順序比較低,比如添加了'linesTerminatedBy':' ', 則覆蓋他自己的' '。
選項 diaelect 還有一個可選值為 json,可以直接把 json 結果導入到文檔表裡。比如我新建一張表 tl1_json重新定義文件以及導入選項。導入 JSON 數據速度也還可以,不到 24 秒。那導入 json 數據,就必須得提到以 X 插件協議通信的工具 import_json了。2. imort_json我們切換到 mysqlx 埠import_json 參數和 Import_table 參數類似,這里我改下選項我在手冊上沒有看到多線程的選項,所以單線程跑 35 秒慢了些。查看剛剛導入的數據import_json 不僅僅可以導入 Json 數據,更重要的是可以在 BSON 和 JSON 之間平滑的轉換,有興趣的同學可以去 TRY 下。
⑸ 如何用shell腳本將在mysql資料庫中得到的數據導入到oracle資料庫中
有一個工具是mysql到oracle做數據遷移的叫Convert Mysql to Oracle 你可以試試,不知道合不合適。
非要弄shell的話,那可真是麻煩可以選擇讓程序員寫個小程序轉換sql的讓後用shell調用。
真自己寫shell。。。那就折騰導出來的 create、insert語句吧。想想都頭大。是在沒必要完全用shell弄。
⑹ 怎樣把txt 文件通過shell 導入到mysql數據表
方法是:、
1。 通過操作系統命令 windows的dir 或者 linux ls 行命令,把所有文件名列出,並復制到excel 中。
2。 利用EXCEL的公式生成 insert into table1 (pathName,fileCOntent) value ('/temp/txt/filename1.txt',LOAD_FILE('/temp/txt/filename1.txt'));
3。 把這些命令直接貼到mysql行命令運行。
⑺ 關於shell腳本導入數據的問題
-h 是遠程連接訪問mysql 127.0.0.1 是本機ip
寫入shell可以這樣 :
mysql -u你的用戶名 -p密碼 <<END
mysql命令.....
exit;
END
/home/zyxf/BinaryConverter/BinaryConverter -af -h127.0.0.1 -uroot -w123456 -d${db}
不清楚是什麼 看錶面意思像是將資料庫轉換成二進制保存的意思。 -af 這些應該是BinaryConverter 這個命令的參數你可以嘗試man BinaryConverter來查看他。
⑻ redis shell 導入到指定的資料庫
1、導出redis
[plain]view plain
#!/bin/bash
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_DB=1
KEYNAME=redis:hash:*
KEYFILE=key.txt
echo"KEYS$KEYNAME"|redis-cli-h$REDIS_HOST-p$REDIS_PORT-n$REDIS_DB>$KEYFILE
OUTFILE=valuelist.txt
TEMPFILE=$OUTFILE.tmp
echo>$TEMPFILE
forkeyin`cat$KEYFILE`
do
echo$key
#echo"HGETALL$key"|redis-cli-h$REDIS_HOST-p$REDIS_PORT-n$REDIS_DB>>$TEMPFILE
echo"GET$key"|redis-cli-h$REDIS_HOST-p$REDIS_PORT-n$REDIS_DB>>$TEMPFILE
done
- 2、整理導出的結果
cat$TEMPFILE|xargs-n2|awk-F""-vKEYNAME=$KEYNAME'{print"HSET"KEYNAME""$1,"""$2"""}'>$OUTFILE
- 其中的xargs -n 2是把2行合成一行,換行符用空格代替
cat$OUTFILE|redis-cli-hlocalhost-p6379
redis-cli--rawmptest|head-c-1|redis-cli-xrestoretest10
[plain]view plain
然後用awk按空格分開,$1是keynam $2是key的值
再次轉換成HSET的格式,其中用到KEYNAME變數,這個要用-v預先定義。
最後轉化為 HSET KEYNAME KEY "VALUE"格式。
3、導入轉換的結果
[plain]view plain
二、直接用Redis的Dump和Restore導出和導入
[plain]view plain
⑼ linux 下如何使用shell 把處理好的csv文件導入到資料庫下
linux 下,可以使用cli程序把csv文件導入到資料庫。具體代碼如下:
$ORACLE_HOME/bin/sqlplus-Susername/password@instanceName>/dev/null2>&1<<!!
#對sqlplus作一些設置,使之只輸出我們需要的文本
setechooff
setpagesize0
setverifyoff
setfeedbackoff
settermoutoff
setlinesize3000
settrimspoolon
#查詢輸出到臨時文件
spool/tmp/some_tmp.csv
#select語句
selectcolumn1||','||column2||','||column3....
fromsome_tablewherecondition
spooloff
#這里可以添加多個查詢,且每個查詢可輸出到不同的文件,如下面注釋
#spool/tmp/some_tmp.csv
#selectcolumn1||','||column2||','||column3....
#fromsome_tablewherecondition
#spooloff
setmarkupHTMLoff
quit
!!
#計算記錄總行數,如果是0則不發郵件
NUM=`cat/tmp/some_tmp.csv|wc-l`
if[$NUM-gt0]
then
#先寫excel的每列的title
echo'Title_Of_Column1,Title_Of_Column2,....Title_Of_ColumnN'>/tmp/attachement.csv
#數據正文
cat/tmp/some_tmp.csv>>/tmp/attachement.csv
#發郵件
(
echo"From:[email protected]"
echo"To:[email protected]"
echo"MIME-Version:1.0"
echo"Content-Type:multipart/mixed;"
echo'boundary="A_Boundary_Name_You_Can_Change_It"'
echo"Subject:Subject"
echo""
echo""
#附件分隔符,上面的boundary前面加--
echo"--A_Boundary_Name_You_Can_Change_It"
echo'Content-Transfer-Encoding:x-uuencode'
echo'Content-Type:text/csv;'
echo'name="attachement.csv"'
echo'Content-Disposition:attachment;'
echo'filename="attachement.csv"'
echo""
uuencode/tmp/attachement.csvattachement.csv
echo"--A_Boundary_Name_You_Can_Change_It"
#附件結束
)|mailx-t
fi
#刪除臨時文件
rm-f/tmp/*.csv
exit0
⑽ 用shell怎麼把數據文件每個欄位定長導入資料庫
shell的字元串截取法。假設定長5個字元。
var=abcdefg
echo${var:0:5}#截取前5個字元
格式是這樣的:
${字元串:起始位置:截取長度}
其中,起始位置從0開始