2012-02-10 84 views
4

Browsermob/Neustar生成一个MySQLdump文件,您可以使用该文件查询负载测试数据而不会产生云小时(自然可计费)。转储文件是一个标准的转储文件,虽然我明白mysqldump有compatible=mssql option,但我显然无法自己运行它。使用文本编辑器查看文件内容(这是非常大的)似乎显示了一系列以大量批量插入结尾的SQL语句。我试图在Microsoft SQL Management Studio中打开该文件,但由于该文件太大而崩溃(已知错误)。将MySQL转储文件导入MSSQL

那么,有没有人知道一个将MySQL转储文件导入MsSQL的工具。我能想到的唯一选择是安装MySQL并将转储文件导入到该文件中,然后通过ODBC传输数据,但是除非需要,否则我真的不想安装MySQL。

重要提示:所以,为了清楚起见,我有一个转储文件,没有别的,我无法访问数据库,也没有任何选项重新运行转储。我必须处理我已收到的文件。

有什么建议吗?该文件看起来像这样的

第一线:

-- MySQL dump 10.13 Distrib 5.1.58, for debian-linux-gnu (i686) 
-- 
-- Host: localhost Database: collector 
-- ------------------------------------------------------ 
-- Server version 5.1.58-1ubuntu1 

/*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */; 
/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */; 
/*!40101 SET @[email protected]@COLLATION_CONNECTION */; 
/*!40101 SET NAMES utf8 */; 
/*!40103 SET @[email protected]@TIME_ZONE */; 
/*!40103 SET TIME_ZONE='+00:00' */; 
/*!40014 SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; 
/*!40014 SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; 
/*!40101 SET @[email protected]@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; 
/*!40111 SET @[email protected]@SQL_NOTES, SQL_NOTES=0 */; 

-- 
-- Table structure for table `name_value_pairs` 
-- 

DROP TABLE IF EXISTS `name_value_pairs`; 
/*!40101 SET @saved_cs_client  = @@character_set_client */; 
/*!40101 SET character_set_client = utf8 */; 
CREATE TABLE `name_value_pairs` (
    `id` int(8) unsigned DEFAULT NULL, 
    `tx_id` char(24) NOT NULL, 
    `step_id` int(8) unsigned DEFAULT NULL, 
    `name` varchar(100) NOT NULL, 
    `value` varchar(100) DEFAULT NULL, 
    KEY `name_value_pairs_id` (`id`), 
    KEY `name_value_pairs_tx_id` (`tx_id`), 
    KEY `name_value_pairs_step_id` (`step_id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 
/*!40101 SET character_set_client = @saved_cs_client */; 

-- 
-- Dumping data for table `name_value_pairs` 
-- 

LOCK TABLES `name_value_pairs` WRITE; 
/*!40000 ALTER TABLE `name_value_pairs` DISABLE KEYS */; 
/*!40000 ALTER TABLE `name_value_pairs` ENABLE KEYS */; 
UNLOCK TABLES; 

-- 
-- Table structure for table `object` 
-- 

DROP TABLE IF EXISTS `object`; 
/*!40101 SET @saved_cs_client  = @@character_set_client */; 
/*!40101 SET character_set_client = utf8 */; 
CREATE TABLE `object` (
    `bytes` int(10) unsigned NOT NULL, 
    `domain` varchar(255) NOT NULL, 
    `end_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', 
    `err_msg` varchar(255) DEFAULT NULL, 
    `host` varchar(255) NOT NULL, 
    `method` varchar(16) DEFAULT NULL, 
    `obj_id` int(8) unsigned NOT NULL, 
    `obj_num` mediumint(4) unsigned NOT NULL, 
    `path` varchar(4096) NOT NULL, 
    `partial_url_md5` varchar(32) NOT NULL, 
    `protocol` varchar(16) NOT NULL, 
    `resolved_ip_addr` varchar(255) DEFAULT NULL, 
    `start_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', 
    `status_code` smallint(4) NOT NULL, 
    `step_id` int(8) unsigned NOT NULL, 
    `time_active` mediumint(6) unsigned DEFAULT NULL, 
    `blocked_time` mediumint(6) unsigned DEFAULT NULL, 
    `dns_lookup_time` mediumint(6) unsigned DEFAULT NULL, 
    `connect_time` mediumint(6) unsigned DEFAULT NULL, 
    `ssl_handshake_time` mediumint(6) unsigned DEFAULT NULL, 
    `send_time` mediumint(6) unsigned DEFAULT NULL, 
    `time_to_first_byte` mediumint(6) unsigned DEFAULT NULL, 
    `receive_time` mediumint(6) unsigned DEFAULT NULL, 
    `tx_id` char(24) NOT NULL, 
    `url` varchar(4096) NOT NULL, 
    KEY `object_partial_url_md5` (`partial_url_md5`), 
    KEY `object_obj_id` (`obj_id`), 
    KEY `object_obj_num` (`obj_num`), 
    KEY `object_step_id` (`step_id`), 
    KEY `object_tx_id` (`tx_id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 
/*!40101 SET character_set_client = @saved_cs_client */; 

-- 
-- Dumping data for table `object` 
-- 

LOCK TABLES `object` WRITE; 
/*!40000 ALTER TABLE `object` DISABLE KEYS */; 

然后是批量插入。

+0

你可以使用mysql.exe来导入它,mysql -u username -p -h host databasename ComputerSaysNo 2012-02-10 14:01:44

+0

@DorinDuminica我没有安装MySQL,我试图避免安装它。 – Junto 2012-02-15 14:30:58

回答

2

此信息的文件中仅仅是删除并重新创建数据库的模式(我假设你已经有),所以你可能不需要那么。

批量插入部分很有趣,可能您可以将每个表的部分隔离到不同的文件,然后使用T-SQL的BULK INSERT将其上传到MsSQL,您可以为此BULK插入定义分隔符和其他设置你应该适合你的任何格式。

+0

如果我正确理解了你,我需要解析这个文件并将SQL语句转换为MsSQL可以理解的东西? – Junto 2012-02-15 14:29:18

+0

是的,假设您已经创建了模式,请从文件中删除所有创建/更改表。然后检查插入是否与MsSQL不兼容,并尝试将它们调整为MsSQL格式(不应该有很多更改)。并运行它。 – pedromarce 2012-02-15 14:57:28

+0

就我所见,手动编辑文件是我目前唯一的选择。我打算让这个问题开放一下,看看是否有其他人提出了一种更自动化的方式来转换这些文件,但如果不是,答案会交给你。 – Junto 2012-03-19 10:26:19