『壹』 ubuntu中mysql數據導入出錯
從mysql裡面導出.sql的文件,然後將.SQL文件導入到5.1版本,就不會有錯了。
『貳』 怎麼提高mysql執行sql導入速度
linux如下設置內存檔:mount -t ramfs none /ram默認使用內存一半如果內存不夠大,系統有多個硬碟,則把mysql應用程序和data目錄分開到不同硬碟上。2、mysql的表設置為myiasm,比同等條件下的innodb能快20倍以上3、導入完成以後才創建資料庫索引4、導入完成以後根據需要轉換為其他engine,比如innodb5、多條數據插入一個表,可以使用多記錄方式:insert into tablename values('xxx','xxx'),('yyy','yyy')...;6、如果多個mysql執行導入,可以使用delayedinsert delayed into tablename values('sss','ssss');7、大文件sql文件可以用split分成多份再導8、同等條件下,redhat比ubuntu強很多(幾乎肯定)
『叄』 怎麼提高Mysql執行sql導入的速度
1、如果mysql的data數據很少,內存足夠大,可以把data防止到內存檔中。
linux如下設置內存檔:
mount -t ramfs none /ram
默認使用內存一半
如果內存不夠大,系統有多個硬碟,則把mysql應用程序和data目錄分開到不同硬碟上。
2、mysql的表設置為myiasm,比同等條件下的innodb能快20倍以上
3、導入完成以後才創建資料庫索引
4、導入完成以後根據需要轉換為其他engine,比如innodb
5、多條數據插入一個表,可以使用多記錄方式:
insert into tablename values(』xxx』,'xxx』),(』yyy』,'yyy』)…;
6、如果多個mysql執行導入,可以使用delayed
insert delayed into tablename values(』sss』,』ssss』);
7、大文件sql文件可以用split分成多份再導
8、同等條件下,redhat比ubuntu強很多(幾乎肯定)
『肆』 怎麼將本地的.sql文件導入hadoop master
完成sqoop的安裝後,可以這樣測試是否可以連接到mysql(注意:mysql的jar包要放到 SQOOP_HOME/lib 下):
sqoop list-databases --connect jdbc:mysql://192.168.1.109:3306/ --username root --password 19891231
結果如下
即說明sqoop已經可以正常使用了。
下面,要將mysql中的數據導入到hadoop中。
我准備的是一個300萬條數據的身份證數據表:
先啟動hive(使用命令行:hive 即可啟動)
然後使用sqoop導入數據到hive:
sqoop import --connect jdbc:mysql://192.168.1.109:3306/hadoop --username root --password 19891231 --table test_sfz --hive-import
sqoop 會啟動job來完成導入工作。
完成導入用了2分20秒,還是不錯的。
在hive中可以看到剛剛導入的數據表:
我們來一句sql測試一下數據:
select * from test_sfz where id < 10;
可以看到,hive完成這個任務用了將近25秒,確實是挺慢的(在mysql中幾乎是不費時間),但是要考慮到hive是創建了job在hadoop中跑,時間當然多。
接下來,我們會對這些數據進行復雜查詢的測試:
我機子的配置如下:
hadoop 是運行在虛擬機上的偽分布式,虛擬機OS是ubuntu12.04 64位,配置如下:
TEST 1 計算平均年齡
測試數據:300.8 W
1. 計算廣東的平均年齡
mysql:select (sum(year(NOW()) - SUBSTRING(borth,1,4))/count(*)) as ageAvge from test_sfz where address like '廣東%';
用時: 0.877s
hive:select (sum(year('2014-10-01') - SUBSTRING(borth,1,4))/count(*)) as ageAvge from test_sfz where address like '廣東%';
用時:25.012s
2. 對每個城市的的平均年齡進行從高到低的排序
mysql:select
address, (sum(year(NOW()) - SUBSTRING(borth,1,4))/count(*)) as ageAvge
from test_sfz GROUP BY address order by ageAvge desc;
用時:2.949s
hive:select
address, (sum(year('2014-10-01') - SUBSTRING(borth,1,4))/count(*)) as
ageAvge from test_sfz GROUP BY address order by ageAvge desc;
用時:51.29s
可以看到,在耗時上面,hive的增長速度較mysql慢。
TEST 2
測試數據:1200W
mysql 引擎: MyISAM(為了加快查詢速度)
導入到hive:
1. 計算廣東的平均年齡
mysql:select (sum(year(NOW()) - SUBSTRING(borth,1,4))/count(*)) as ageAvge from test_sfz2 where address like '廣東%';
用時: 5.642s
hive:select (sum(year('2014-10-01') - SUBSTRING(borth,1,4))/count(*)) as ageAvge from test_sfz2 where address like '廣東%';
用時:168.259s
2. 對每個城市的的平均年齡進行從高到低的排序
mysql:select
address, (sum(year(NOW()) - SUBSTRING(borth,1,4))/count(*)) as ageAvge
from test_sfz2 GROUP BY address order by ageAvge desc;
用時:11.964s
hive:select
address, (sum(year('2014-10-01') - SUBSTRING(borth,1,4))/count(*)) as
ageAvge from test_sfz2 GROUP BY address order by ageAvge desc;
用時:311.714s
『伍』 如何在LINUX下建立一個MYSQL資料庫,然後我想把一個SQL資料庫導入進去,求步驟!
首先需要安裝MYSQL數據,不知你的是哪個發行版,就當是常用的吧,一般為
#apt-get install mysql-server mysql-client #for debian ubuntu
#yum install mysql-server mysql-client #for CENTOS RHEL
安裝完畢後進入資料庫
mysql 回車,一般在本機上直接用此命令就可以進入的,從其它機器連接還需要賬號密碼
mysql>source <filename> #把<filename>換成你要導入的資料庫備份SQL文件完整路徑,回車等待
mysql>exit #打完收功,退出MYSQL
『陸』 ubuntu下qt鏈接mysql資料庫問題
1,在.pro文件中修改 QT += sql ,大致如下
TEMPLATE = app
TARGET =
DEPENDPATH += .
INCLUDEPATH += .
QT +=sql
2,在程序中添加資料庫
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
qDebug()<<QString("add database");
//db.setHostName("192.168.1.126");//遠程訪問
db.setHostName("localhost");
db.setDatabaseName("test");
//db.setDataBaseName("");
db.setUserName("root");
db.setPassword("000000");
if (!db.open())
return db.lastError();
『柒』 分別在Linux和Windows下,如何使用MySql命令導入/導出*.sql文件
一般伺服器上沒有分用戶的時候mysql用戶名可以用 "root"得到最高許可權.
Ubuntu下使用MySql命令導入/導出*.sql文件( redhat的mysql命令在: /usr/local/mysql/bin/ 目錄下面 )導出:
1.導出整個資料庫
mysqlmp -u 用戶名 -p密碼 資料庫名 > 導出的文件名
2.導出指定表
mysqlmp -u 用戶名 -p密碼 資料庫名 表名1 表名2 ... > 導出的文件名
3.導出指定條件的記錄
mysqlmp [--host=伺服器] -u 用戶名 -p密碼 資料庫名 表名 -w"條件語句" > 導出的文件名
4.如果帶埠號的話,必須去掉密碼:
mysqlmp [--host=伺服器] [--port=埠號] -u 用戶名 -p 資料庫名 表名 -w"條件語句" [--skip-lock-tables ] > 導出的文件名導入:在提示符下輸入
mysql -u root -p 密碼
進入MYSQL後:
先打開要導入的資料庫
mysql>use test;
然後,設置要導入的數據的編碼(如果MySQL默認編與要導入的數據編碼一致,此步可省略)
mysql>set names 編碼格式(utf8或gbk);
最後,導入數據sql文件
mysql> source c:/test.sql;
Windows下使用MySql命令導入/導出*.sql文件1. 導出資料庫:
D:\mysql\bin> mysql 資料庫名 > 導出的文件名 -u 用戶名 -p密碼
2. 導入資料庫:
D:\mysql\bin> mysql 資料庫名 < 導出的文件名 -u 用戶名 -p密碼