将.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)的主要内容,如果未能解决你的问题,请参考以下文章
将 Excel 文件导入 myPhpAdmin MySQL 数据库