簡體   English   中英

使用MySQL導入大型SQL文件

[英]Importing a large sql file with MySQL

我希望將來進行一些社交網絡分析。 我擁有的數據存儲在sql文件中。 我正在嘗試將其導入到PC上運行的MySQL,以便可以對其進行一些了解。 我只是想確保自己做對了。 請參閱此imgur鏈接。

http://i.imgur.com/C6n0XyJ.png

我只問這是因為我已經期待了一個多小時,但是沒有任何視覺上的確認它確實在起作用。 “立即導入...”或某些功能,或百分比計數器。

我知道它已經完成了某些事情,因為在另一個命令行窗口中,我做了:

mysql> show databases;

和“ tweetdata”確實確實出現在默認MySQL表(information_schema,mysql等)下的列表中。 我只是想確保它還沒死,我做了正確的命令來導入數據!

PS:是的,大家都可以看到我為今天的本地SQL服務器設置的root密碼,該密碼僅在家里的PC上運行,根本沒有數據:)

更新:

感謝您的輸入,Tadman,很高興聽到MySQL沒有提供任何進展指示。 過一會兒,我收到此錯誤消息:

ERROR 1049 (42000): Unknown database 'disasters'

這是我正在查看的屏幕截圖: http : //i.imgur.com/GRRgAsm.jpg

但是當我檢查文件夾時,tweetdata文件夾的大小為14.3GB,所以我認為導入可能有效嗎? 如果db響應顯示而如何未知

show databases;

不幸的是,導入這樣的數據庫轉儲時,您不會得到太多反饋。 如果是在事務模式下創建的,那么在完全導入之前,您甚至都不會看到任何數據。

一種查看是否正在執行任何操作的方法是查看存儲原始表的數據庫目錄,並查看正在創建的文件以及文件的大小。 使用file_per_table選項使此操作變得更容易。

我的建議是嘗試將sql文件分成較小的塊,以便計算機能夠處理它們或嘗試在mysql內進行導入。 如果已經完成導入,則還可以查看數據庫本身中導入的數量。

請記住,始終要檢查是否已導入所有表和所有記錄的導入。

分割SQL檔案

您不僅可以隨意拆分文件,還必須照顧SQL語句的完整性,而不要破壞它們,還必須具有適當的標題。 通常有宣言,像

--
-- Table structure for table `actions`
--

DROP TABLE IF EXISTS `actions`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `actions` (
 /* ... here goes table declaration

其次是

--
-- Dumping data for table `actions`
--

LOCK TABLES `actions` WRITE;
/*!40000 ALTER TABLE `actions` DISABLE KEYS */;
INSERT INTO `actions` VALUES
/* ... entries in brackets ending with comma

並以UNLOCK TABLES結尾,但您的結構可能會有所不同。

重要的是聲明之前先中斷。

調試實踐將告訴您嘗試先分成兩半,然后嘗試每次導入。 如果一個或兩個都失敗,請繼續進行分裂,直到它們成功您找到問題所在。

使用MySQL

當您在MySQL命令行中導入數據庫(或執行查詢)時,不會為每個成功記錄而是為整個表生成回顯,這也可以幫助您找到切入點。

看看數據庫

您還可以查看數據庫,看看哪個是導入的最后一個表或最后一個記錄。 這樣,您還可以嘗試查看SQL並查找/嘗試消除引起問題的原因。 通過重復,您應該得到完整而正確的輸入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM