【发布时间】:2023-04-09 19:42:01
【问题描述】:
我对 mySQL 还很陌生。今天,我使用教程(http://www.elated.com/articles/mysql-for-absolute-beginners/)练习阅读 .sql 文件。 .sql 文件名为 books.sql,仅包含一个没有记录的表:
USE bookstore;
DROP TABLE IF EXISTS books;
CREATE TABLE books
(
id int unsigned NOT NULL auto_increment, # Unique ID for the record
title varchar(255) NOT NULL, # Full title of the book
author varchar(255) NOT NULL, # The author of the book
price decimal(10,2) NOT NULL, # The price of the book
PRIMARY KEY (id)
);
现在,我正在尝试读取一个名为 db.sql 的 .sql 文件。这包含大约 200 行标题行和几个表和字段列表。然后,它包含实际记录。它非常大(751,933 行)。
我试图做的是打开 mysql,创建一个数据库,然后读入这个 db.sql 文件。我希望将 db.sql 中的所有表(及其记录)放入此数据库:
mysql -u root
create database myDataBase;
source /path/db.sql
我收到了一长串错误,开头是:
ERROR 1193 (HY000): Unknown system variable 'statement_timeout'
ERROR 1193 (HY000): Unknown system variable 'client_encoding'
ERROR 1193 (HY000): Unknown system variable 'standard_conforming_strings'
ERROR 1193 (HY000): Unknown system variable 'check_function_bodies'
ERROR 1193 (HY000): Unknown system variable 'client_min_messages'
ERROR 1193 (HY000): Unknown system variable 'escape_string_warning'
ERROR 1193 (HY000): Unknown system variable 'search_path'
ERROR 1193 (HY000): Unknown system variable 'default_tablespace'
ERROR 1193 (HY000): Unknown system variable 'default_with_oids'
ERROR 1046 (3D000): No database selected
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SEQUENCE academic_academic_id_seq
START WITH 1
INCREMENT BY 1
NO MAX' at line 1
然后以重复的语句结束:
ERROR 2005 (HY000): Unknown MySQL server host 'corey.vorland 0' (0)
No connection. Trying to reconnect...
ERROR 2005 (HY000): Unknown MySQL server host 'corey.vorland 0' (0)
ERROR:
Can't connect to the server
db.sql文件开头如下:
--
-- PostgreSQL database dump
--
SET statement_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = off;
SET check_function_bodies = false;
SET client_min_messages = warning;
SET escape_string_warning = off;
SET search_path = public, pg_catalog;
SET default_tablespace = '';
SET default_with_oids = false;
--
-- Name: academic; Type: TABLE; Schema: public; Owner: -; Tablespace:
--
CREATE TABLE academic (
academic_id integer NOT NULL,
family_name text,
given_name text,
other_names text,
standrews_link text,
comments text,
reference text,
descendant_count integer
);
还有
--
-- Name: academic_academic_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE academic_academic_id_seq
START WITH 1
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;
--
-- Name: academic_academic_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE academic_academic_id_seq OWNED BY academic.academic_id;
--
-- Name: academic_academic_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
--
SELECT pg_catalog.setval('academic_academic_id_seq', 190374, true);
--
-- Name: advises; Type: TABLE; Schema: public; Owner: -; Tablespace:
--
CREATE TABLE advises (
advisor integer NOT NULL,
advisee integer NOT NULL,
advice_type character varying(20),
degree integer NOT NULL
);
我尝试了一些方法,例如在第一个 CREATE TABLE 命令之前从 db.sql 中删除一些标题行,但仍然有很多错误。由于我对数据库和 SQL 非常缺乏经验,我不知道如何解决这个问题。我假设这个 db.sql 文件显然来自 PostgreSQL,并且有多个表导致我尝试使用 source 命令将这个 db.sql 文件读入 mysql 时出现问题?我什至可以将它读入mysql吗?
感谢您的任何建议。
【问题讨论】:
-
你想把它导入 MySQL 并且不能只使用 PostgreSQL 有什么具体原因吗?
-
这只是我的看法,但 Postgresql 在另一个星球上。如果可以的话,学习和使用它。
-
SQL(有点遗憾)是一组不兼容的方言。您不能只从 PostgreSQL 或 MySQL 加载数据库转储,反之亦然。
-
谢谢大家。我在尝试从 PostgreSQL 转换到 MySQL 时遇到很多错误。老实说,我没有考虑过使用 PostgreSQL。我现在就试一试……
标签: mysql database postgresql database-migration