将.sql文件导入mysql(最终导入excel)

Posted

技术标签:

【中文标题】将.sql文件导入mysql(最终导入excel)【英文标题】:import .sql file to mysql (to finally import to excel) 【发布时间】:2017-08-05 18:34:36 【问题描述】:

所以我一直在尝试将 crunchbase 2013 快照(一个 mysql 转储文件)导入到 excel 中。我一直在尝试首先通过 mysql 命令行或 mysql worbench 6.3 将其导入数据库,但到目前为止我一直没有运气。 (在 Windows 上工作)

我的第一步是将所有文件合并到一个转储文件中。然后我尝试导入但收到此错误:

错误:语句中出现 ASCII '\0',但除非启用选项 --binary-mode 并且 mysql 以非交互模式运行,否则这是不允许的。如果需要 ASCII '\0',则将 --binary-mode 设置为 1。查询:''。

然后我尝试将其从 ANSI 转换为 UTF8 并重新打开。我收到与初始垃圾值相关的错误。我删除了它们,然后再次尝试导入。这是新的错误:

第 2 行的 ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以了解在 '"cb_acquisitions" 附近使用的正确语法( “id” bigint(20) 非空, “acquisition_id” bigint(20) NO' 在第 1 行

这是常规 .sql 文件的样子:

   Mac OS X                2   „      ¶                                      ATTR       ¶   ˜                     ˜     com.apple.quarantine q/0001;52aa111a;Transmit.app;     Mac OS X                2   „      ¶                                      ATTR       ¶   ˜                     ˜     com.apple.quarantine q/0001;52aa111a;Transmit.app;     Mac OS X                2   „      ¶                                      ATTR       ¶   ˜                     ˜     com.apple.quarantine q/0001;52aa111a;Transmit.app;     Mac OS X                2   „      ¶                                      ATTR       ¶   ˜                     ˜     com.apple.quarantine q/0001;52aa111a;Transmit.app;     Mac OS X                2   „      ¶                                      ATTR       ¶   ˜                     ˜     com.apple.quarantine q/0001;52aa111a;Transmit.app;     Mac OS X                2   „      ¶                                      ATTR       ¶   ˜                     ˜     com.apple.quarantine q/0001;52aa111a;Transmit.app;     Mac OS X                2   „      ¶                                      ATTR       ¶   ˜                     ˜     com.apple.quarantine q/0001;52aa111a;Transmit.app;     Mac OS X                2   „      ¶                                      ATTR       ¶   ˜                     ˜     com.apple.quarantine q/0001;52aa111a;Transmit.app;     Mac OS X                2   „      ¶                                      ATTR       ¶   ˜                     ˜     com.apple.quarantine q/0001;52aa111a;Transmit.app;     Mac OS X                2   „      ¶                                      ATTR       ¶   ˜                     ˜     com.apple.quarantine q/0001;52aa111a;Transmit.app;     Mac OS X                2   „      ¶                                      ATTR       ¶   ˜                     ˜     com.apple.quarantine q/0001;52aa111a;Transmit.app; -- MySQL dump 10.13  Distrib 5.5.31, for debian-linux-gnu (x86_64)
--
-- Host: 127.0.0.1    Database: analytics_2
-- ------------------------------------------------------
-- Server version   5.0.51-log
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO,POSTGRESQL' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Not dumping tablespaces as no INFORMATION_SCHEMA.FILES table on this server
--

--
-- Table structure for table "cb_acquisitions"
--

DROP TABLE IF EXISTS "cb_acquisitions";
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE "cb_acquisitions" (
  "id" bigint(20) NOT NULL,
  "acquisition_id" bigint(20) NOT NULL,
  "acquiring_object_id" varchar(64) NOT NULL,
  "acquired_object_id" varchar(64) NOT NULL,
  "term_code" varchar(16) default NULL,
  "price_amount" decimal(15,0) default NULL,
  "price_currency_code" varchar(16) default NULL,
  "acquired_at" date default NULL,
  "source_url" varchar(255) default NULL,
  "source_description" varchar(255) default NULL,
  "created_at" datetime default NULL,
  "updated_at" datetime default NULL,
  PRIMARY KEY  ("id"),
  KEY "acquiring_object_id" ("acquiring_object_id"),
  KEY "acquired_object_id" ("acquired_object_id"),
  KEY "acquisition_id" ("acquisition_id")
);
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table "cb_acquisitions"
--

LOCK TABLES "cb_acquisitions" WRITE;
/*!40000 ALTER TABLE "cb_acquisitions" DISABLE KEYS */;
INSERT INTO "cb_acquisitions" VALUES (1,1,'c:11','c:10',NULL,20000000,'USD','2007-05-30','http://venturebeat.com/2007/05/30/fox-interactive-confirms-purchase-of-photobucket-and-flektor/','Fox Interactive confirms purchase of Photobucket and Flektor','2007-05-31 22:19:54','2008-05-21 19:23:44'),(2,7,'c:59','c:72','cash',60000000,'USD','2007-07-01','http://www.techcrunch.com/2007/07/02/dea

【问题讨论】:

是否可以将表格转储为 CSV 文件,然后再导入? 我尝试将其重命名为 CSV 并导入,但它也不起作用。 (不确定在这种情况下是否是“倾销”的意思) 【参考方案1】:

首先将.sql转储文件导入MySQL,生成cb_acquisitions表。然后使用SELECT ... INTO OUTFILE 将表格写入常规 CSV,然后将其导入 Excel:

SELECT *
FROM cb_acquisitions
INTO OUTFILE '/path/to/output.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';

关于您的转储文件,我认为表和字段名称周围的双引号可能是一个问题。我得到了创建表并插入工作,q.v。下面的演示,但我不得不稍微玩弄一下脚本。

Rextester

【讨论】:

这不是假设我已经为 cb_acquisitions 创建了数据库吗?转储文件包含创建表的所有查询的列表,但由于上述错误,我什至无法将转储文件导入数据库。 @TechTheKidd 我能够轻松加载您的 .sql。只需要删除双引号和其他一些小东西。 我查看了您的编辑,它们很有帮助。唯一的问题是转储文件很大(~500MB),所以可能有太多的插入查询需要手动编辑。我正在尝试仅更改创建表部分并查看会发生什么(尽管文件需要一段时间才能保存)。 那么你的转储可能有问题。它们真的来自 MySQL 吗?如果您必须手动编辑转储以将数据带回数据库,这显然违背了转储的目的。 这是链接。 data.crunchbase.com/docs/2013-snapshot 他们声称它至少是一个 mysqldump。如果您不是会员,则无法访问这些文件。【参考方案2】:

我设法让它通过 mysql 命令行运行:

    mysql -u root -p --binary-mode=1
    mysql> use dbname;
    mysql> source /path/of/file/name.sql

【讨论】:

以上是关于将.sql文件导入mysql(最终导入excel)的主要内容,如果未能解决你的问题,请参考以下文章

用dbgrideh将Excel文件导入数据库中要怎么做

将 Excel 文件导入 myPhpAdmin MySQL 数据库

将数据从 Excel 文件导入 SQL 表而不重复?

怎样将Excel文件导入数据库(在JSP环境下Java代码)

sqlserver 数据导入MySQL

请问:在sql 2005中导入文本文件时,怎么去掉双引号?