我實(shí)驗(yàn)了下, 和這兩個個符號,沒有作為單獨(dú)的參數(shù)處理,因?yàn)樵谧鳛閰?shù)傳遞給程序之前,已經(jīng)提前被shell給解析并替換了。
創(chuàng)新互聯(lián)于2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站建設(shè)、網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元沙河做網(wǎng)站,已為上家服務(wù),為沙河各地企業(yè)和個人服務(wù),聯(lián)系電話:028-86922220
簡單的例子:
#include stdio.h
#include stdlib.h
int main(int argc ,char *argv[])
{
printf("arguement0=%s\narguement1=%s\narguement2=%s\n",
argv[0],argv[1],argv[2]);
FILE *stream;
if((stream = fopen(argv[2],"r")) == NULL )
{
perror("cannot open file...\n");
exit(-1);
}
fclose(stream);
return 0;
}
然后執(zhí)行,結(jié)果相當(dāng)奇怪:
[ksl@myhost ~]$ ./a.out test2.c
arguement0=./a.out
arguement1=(null)
arguement2=SAL_USE_VCLPLUGIN=gtk
cannot open file...
: No such file or directory
再次執(zhí)行:
[ksl@myhost ~]$ ./a.out test2.c
cannot open file...
: No such file or directory
我覺得a.out的輸出肯定是被定向到test2.c里面去了。。。再次驗(yàn)證:
[ksl@myhost ~]$ cat test2.c
arguement0=./a.out
arguement1=(null)
arguement2=SAL_USE_VCLPLUGIN=gtk
果然...所以這個是和shell的工作有關(guān)的...
不過,我們還有辦法...利用這一點(diǎn)..剛才查了下
這里有說明
,說和這兩個符號把把stdin和stdout定向到了參數(shù)提供的文件...
不過,那不就更省事了,我們還不用打開文件了,直接讀取stdin和stdout不就得了 ...
程序修改成這樣:
#include stdio.h
#include stdlib.h
int main(int argc ,char *argv[])
{
char buf[128];
char *p=NULL;
while((p=fgets(buf,64,stdin))!=NULL) //打印下文件,看有效果沒....
printf("%s",p);
return 0;
}
編譯,換個文件再試試,就試試這個test.c吧:
[ksl@myhost ~]$ ./a.out test.c
#include stdio.h
#include stdlib.h
int main(int argc ,char *argv[])
{
char buf[128];
char *p=NULL;
while((p=fgets(buf,64,stdin))!=NULL)
printf("%s",p);
return 0;
}
so,搞定..... 順便重溫了下重定向...呵呵
如果你給root用戶設(shè)置了密碼的話用:mysql
-u
root
-p
"你的數(shù)據(jù)庫名"
“你的sql文件”,然后輸入密碼。
如果沒設(shè)置密碼的話直接mysql
-u
root
"你的數(shù)據(jù)庫名"
“你的sql文件”
mysql在linux命令行下導(dǎo)入txt文件
mysql導(dǎo)入txt的命令如下
但如果在終端中通過
登陸的話,輸入以上命令會報(bào)錯:
ERROR 1148 (42000): The used command is not allowed with this MySQL version
大家不要被報(bào)錯的表面翻譯給誤導(dǎo)了,這其實(shí)是個權(quán)限問題,解決方法如下
在通過終端輸入時(shí),加上一個參數(shù)--local-infile = 1 詳細(xì)解釋請自行百度。
用下面語句登陸后再進(jìn)行導(dǎo)入,就成功了
mysqlimport方法導(dǎo)入文件:
其實(shí)無論是load data還是mysqlimport,導(dǎo)入是事務(wù),如果不是則設(shè)置引擎支持事務(wù)。
如何解決大文件導(dǎo)入?當(dāng)有十幾甚至幾十G文件需要導(dǎo)入時(shí),因?yàn)閷?dǎo)入中間可能會失敗,如果一次性導(dǎo)入,導(dǎo)入失敗會導(dǎo)致回滾,代價(jià)太高,從幾十G文件中尋找問題也是很頭疼的事情。因此,需要先將大文件拆成小文件,比如split命令,按2萬行一個單位拆成小文件,以后綴編號區(qū)分,編寫腳本進(jìn)行自動導(dǎo)入。如果發(fā)生的錯誤,只需要從小文件中定位問題即可。然后重啟導(dǎo)入腳本。