sql大數據分批查詢導出
⑴ SqlServer2008 在用導入導出向導做大數據量導出時候,開始還比較快,越到後面越慢,大概1億數據量
如果表不多的話,可以考慮用bcp來做,目標表可以先把索引禁掉,等數據全部導入之後再重建索引。
⑵ sqlserver2000大量資料庫表從伺服器如何導出到本地
我的建議:1.在伺服器建立一個相同模型的資料庫,將數據分批寫進去,然後將模型資料庫分離到本地附加就行了。
2.或者做伺服器本地的資料庫備份,定義備份作業,執行時間設在網站訪問量小的時間段執行。
⑶ 請教各位,如何分批獲取資料庫中數據
在有些業務場景中需要分批去取資料庫表中的全部數據來進行處理,最簡單的方法就是使用分頁查詢語句(偷懶以MySQL為例):
[sql] view plain print?
select * from datatable limit offset,amount
select * from datatable limit offset,amount
這里就會有一個問題,隨著offset值的越來越大,這條sql要掃描的表數據就會越來越多,因為要定位到offset這一行就需要掃描比offset小的所有行。顯然在一張大數據量的表中,去這樣做,性能就會出問題。為了避免這樣的情形出現,我們自然會想到使用索引來解決,比如使用自增序列id進行分批取:
[sql] view plain print?
select * from datatable where id >= start and id<start+batchCount
select * from datatable where id >= start and id<start+batchCount
這樣我們對id建索引,然後分批去取,顯然效果會高很多,但是如果自增序列由於刪除等操作變得不是連續,就會出現空執行和多執行的情況出現。要解決這個方法,我們就需要結合使用索引和分頁的優勢來處理:
[sql] view plain print?
select * from datatable where id >= start limit batchCount
select * from datatable where id >= start limit batchCount
然後每次取回來我們再計算出起始id值,再去取下一批數據。這樣就可以既避免了第一種不走索引,查詢性能低下的問題,又解決了第二種id不連續,導致取回來的數據量不穩定導致浪費的問題了。
⑷ 大數據量的mysql資料庫怎麼導出sql
mysqlmp -u 用戶名 -p 資料庫名 > 導出的文件名
試試這個命令?
⑸ plsql developer 如何分批導出數據 oracle資料庫 因為數據太多 嘗試導出html 達到2G 無法打開
數據量大,就不要用lsql developer 導出了,用imp或impdp導出都可以。
⑹ SQL怎麼分批導出數據
企業管理器抄-工具-數據轉換服務-導出數據-下一步-資料庫(選擇要導出數據表的所在資料庫)-下一步-目的(t):選擇你要想要轉換的文件類型(比如說文本文件)-在桌面上建一個1.txt-文件名選中1.txt-下一步-默認從源資料庫...-源:選擇要導出的數據表-下一步-完成.
⑺ oracle sqldeveloper大數據量如何導入導出
方法一:利用PL/SQL Developer工具導出:
菜單欄---->Tools---->Export Tables
方法二:利用cmd的操作命令導出,詳情如下:
1:G:Oracleproct10.1.0Client_1NETWORKADMIN目錄下有個tnsname.ora文件,內容如下:
CMSTAR=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=
(PROTOCOL=TCP)(HOST=172.18.13.200)(PORT=1521))
)
(CONNECT_DATA=
(SERVICE_NAME=cmstar)
)
)
其中:CMSTAR為資料庫名,HOST為IP地址,所以可以仿效上面的例子手動添加數據錄連接。
2:用cmd進入命令行
輸入:tnsping cmstar
就是測試172.18.13.200是否連接成功
3:導入與導出,如下:
數據導出:
1 將資料庫TEST完全導出,用戶名system 密碼manager
導出到D:chu.dmp中
exp system/manager@TEST file=d:chu.dmp
full=y
2將資料庫中system用戶與sys用戶的表導出
expsystem/manager@TESTfile=d:chu.dmpowner=(system,sys)
3將資料庫中的表table1、table2導出
expsystem/manager@TESTfile=d:chu.dmptables=(table1,table2)
4將資料庫中的表table1中的欄位filed1以"00"打頭的數據導出
expsystem/manager@TESTfile=d:chu.dmptables=(table1)query="wherefiled1like'00%'"
上面是常用的導出,對於壓縮我不太在意,用winzip把dmp文件可以很好的壓縮。
不過在上面命令後面加上compress=y就可以了
數據的導入
1將D:chu.dmp中的數據導入TEST資料庫中。
impsystem/manager@TESTfile=d:chu.dmp
上面可能有點問題,因為有的表已經存在,然後它就報錯,對該表就不進行導入。
在後面加上ignore=y就可以了。
2將d:chu.dmp中的表table1導入
impsystem/manager@TESTfile=d:chu.dmptables=(table1)
注意事項:導出dmp數據時需要有導出表的許可權的用戶,否則不能導出。
PL/SQL Developer是Oracle資料庫中用於導入或導出資料庫的主要工具,本文主要介紹了利用PL/SQL
Developer導入和導出資料庫的過程,並對導入或導出時的一些注意事項進行了說明,接下來我們就一一介紹。
導出步驟:
1 tools ->export user object 選擇選項,導出.sql文件。
2 tools ->export tables-> Oracle Export 選擇選項導出.dmp文件。
導入步驟:
註:導入之前最好把以前的表刪除,當然導入另外資料庫除外。
1 tools->import tables->SQL Inserts
導入.sql文件。
2 tools->import talbes->Oracle Import然後再導入dmp文件。
一些說明:
Tools->Export User Objects導出的是建表語句(包括存儲結構)。
Tools->Export
Tables裡麵包含三種導出方式,三種方式都能導出表結構以及數據,如下:
Oracle Export
Sql Insert
pl/sql
developer
第一種是導出為.dmp的文件格式,.dmp文件是二進制的,可以跨平台,還能包含許可權,效率也很不錯,用得最廣
。
第二種是導出為.sql文件的,可用文本編輯器查看,通用性比較好,但效率不如第一種,適合小數據量導入導出。尤其注意的是表中不能有大欄位(blob,clob,long),如果有,會提示不能導出(提示如下:
table contains one or more LONG columns cannot export in sql format,user Pl/sql
developer format instead)。
第三種是導出為.pde格式的,.pde為Pl/sql
developer自有的文件格式,只能用Pl/sql developer自己導入導出,不能用編輯器查看。
⑻ SQL如何分批導出數據
第一:使用Select Into 語句
如果企業資料庫都是採用SQL Server資料庫的話,則可以利用select into語句實現數據的導入。
select into語句的作用是把數據從另外一個資料庫中查詢出來,然後插入到用戶指定的某個表中。
注意:使用該語句需要注意四個前提
1:需要在目的資料庫中建立相關的表
2:這種方法,只復製表中的數據,而不復製表中的索引。
3:這條語句的使用具有局限性,要求源表與目的表所在的資料庫都必須是SQL Server,可以允許版本不同。
4:採用這條語句的時候,目的表中不能有數據。否則的話,目的表中的數據將會被清除,也就是說 ,這條語句不支持表與表數據的合並。
在SQL Server中,有一條語句支持表與表數據的合並,那就是insert into,它的作用是把另一張表中的數據插入到當前表中。
若用戶想要合並兩個表的數據,可以採用此語句。
5:以上兩條語句均支持兼容的不同類型的數據類型。例如,在原表中,某個欄位的數據類型是整型,而在目的表中,這個欄位的數據類型是浮點型,
這兩種類型的數據是兼容的,所以資料庫是允許這樣導入的。
第二:利用Excel等中間工具進行控制。
雖然第一種方法操作比較簡單,但是也有一些缺點。如它只支持同一種類型的資料庫,不能對數據進行過多的干預等等。一般情況下,若用戶數據准確度比較高,
不需要過多的修改,拿來就可以使用的話,筆者建議採用第一種方式。
但是,若在源資料庫中,數據的准確度不是很高,又或者,有很多數據時錯誤的,沒有實際意義的。總之,需要對源數據進行整理才能夠導入的情況,建議不直
接導入,再進行修改的做法。在這種情況下,最好是先將源數據導出成Excel文件,有些資料庫,如Oracle,不支持導出Excel文件,但是它支持導出csv文件,
這種文件也可以,Excel文件可以打開的。
然後,再在Excel中 ,對源數據進行修改。由於Excel是一個很強的表格處理工具,所以,在Excel中修改數據,比在資料庫中修改數據要容易一些,也來的簡單。
如可以利用按時間排序功能,把一些長久不用的記錄清除掉,也可以利用替換功能,把一些不規范的字元替換掉。這些在資料庫中比較復雜的任務,在Excel中卻
可以輕松的完成。
等到Excel表中的數據修改無誤後,就可以把Excel表格文件直接導入到SQL Server資料庫中,SQL Server與Excel的兼容性很好,在Sql Server中提供了直接
從Excel文件中導入數據的工具。
這種方式雖然要藉助中間工具導入數據,但是,處理起來方便,直觀,所以很多時候我們需要這種方式來完成數據導入任務。
⑼ mysql如何分批導出超150萬行數據表,因為CSV文件用excel打開最多容納104萬行
mysqlmp -u用戶名 -p密碼 -t -T /var/lib/mysql-files/ 資料庫名 表名 --where="篩選條件" --fields-terminated-by=',' --fields-enclosed-by='\"'
參數說明:
-t 不列印表的創建信息
-T 以 txt 文本輸出回/var/lib/mysql-files/,輸出的地答址為 show variables like 'secure_file_priv'; 查詢出的
--fields-terminated-by 欄位之間以,分割
--fields-enclosed-by 每個欄位用「包含
輸出的文件在/var/lib/mysql-files/,文件名為表名.txt
⑽ 如何在pl/sql中實現大數據量的搬移
方法一:利用PL/SQL Developer工具導出:菜單欄---->Tools---->Export Tables
方法二:利用cmd的操作命令導出,詳情如下::G:\Oracle\proct\10.1.0\Client_1\NETWORK\ADMIN目錄下有個tnsname.ora文件,內容如下:
1
2
3
4
5
6
7
8
9
10
CMSTAR =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)(HOST = 172.18.13.200)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = cmstar)
)
)
其中:CMSTAR為資料庫名,HOST為IP地址,所以可以仿效上面的例子手動添加數據錄連接。
2:用cmd進入命令行輸入:tnsping cmstar就是測試172.18.13.200是否連接成功
3:導入與導出,如下:數據導出:1 將資料庫TEST完全導出,用戶名system 密碼manager 導出到D:\chu.dmp中exp system/manager@TEST file=d:\chu.dmp full=y2將資料庫中system用戶與sys用戶的表導出expsystem/manager@TESTfile=d:\chu.dmpowner=(system,sys)3將資料庫中的表table1、table2導出expsystem/manager@TESTfile=d:\chu.dmptables=(table1,table2)4將資料庫中的表table1中的欄位filed1以"00"打頭的數據導出expsystem/manager@TESTfile=d:\chu.dmptables=(table1)query=\"wherefiled1like'00%'\"