对于MySQL和SQL,.sql文件是否有所不同?

问题描述:

我有一个.sql文件,我想把它加载到MySQL数据库中。我不知道它是从哪个数据库(MySQL或MS-SQL)创建的。对于MySQL和SQL,.sql文件是否有所不同?

现在,我试图将该文件导入MySQL数据库。它在导入和执行该文件时显示错误。

Q1. So, my question is whether the .sql file generated from MySQL and MS-SQL are different?

注意:我使用SQLYog软件(用于MySQL的图形界面)导入文件。

以下是错误:

Query: CREATE TABLE ads ( id bigint(20) NOT NULL auto_increment, city_id int(11) NOT NULL, type text collate utf8_bin NOT NULL, town text collate utf8_bin NOT NULL, address text collate utf8_bin NOT NULL, price text collate utf8_bin NOT NULL, info text collate utf8_bin NOT NULL, link text collate utf8_bin NOT NULL, hasImage int(11) NOT NULL, language varchar(2) collate utf8_bin NOT NULL, time_added varchar(255) collate utf8_bin NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1

错误发生在:2009-09-08 17点41分01秒 线no.:35 错误代码:1050 - 表 '广告' 已存在

Query: CREATE TABLE ads ( id bigint(20) NOT NULL auto_increment, city_id int(11) NOT NULL, type text collate utf8_bin NOT NULL, town text collate utf8_bin NOT NULL, address text collate utf8_bin NOT NULL, price text collate utf8_bin NOT NULL, info text collate utf8_bin NOT NULL, link text collate utf8_bin NOT NULL, hasImage int(11) NOT NULL, language varchar(2) collate utf8_bin NOT NULL, time_added varchar(255) collate utf8_bin NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1

错误发生在:2009-09-08 17时41分21秒 no.:35 错误代码行:1050 - 表 '广告' 已存在

Query: CREATE TABLE ads ( id bigint(20) NOT NULL auto_increment, city_id int(11) NOT NULL, type text collate utf8_bin NOT NULL, town text collate utf8_bin NOT NULL, address text collate utf8_bin NOT NULL, price text collate utf8_bin NOT NULL, info text collate utf8_bin NOT NULL, link text collate utf8_bin NOT NULL, hasImage int(11) NOT NULL, language varchar(2) collate utf8_bin NOT NULL, time_added varchar(255) collate utf8_bin NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1

错误发生在:2009-09-08 17时41分35秒 no.:35 错误代码行:1050 - 表 '广告' 已存在

Query: CREATE TABLE ads ( id bigint(20) NOT NULL auto_increment, city_id int(11) NOT NULL, type text collate utf8_bin NOT NULL, town text collate utf8_bin NOT NULL, address text collate utf8_bin NOT NULL, price text collate utf8_bin NOT NULL, info text collate utf8_bin NOT NULL, link text collate utf8_bin NOT NULL, hasImage int(11) NOT NULL, language varchar(2) collate utf8_bin NOT NULL, time_added varchar(255) collate utf8_bin NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1

错误发生在:2009 -09-08 17时42分07秒 线no.:35 错误代码:1050 - 表“广告”已存在

Query: 1 Stanford University 6700 http://www.orkut.co.in . . .

+1

为什么不在你的问题中包含错误信息? – bernie 2010-02-10 06:12:56

+0

“MySQL和SQL”:如“Microsoft SQL Server”中的“SQL”? – Thilo 2010-02-10 06:13:19

+1

@Thilo @Adam我编辑了这个问题。 – 2010-02-10 06:18:52

文件扩展名“.sql”实质上是无意义的,它只是存在,因此知道这个文件是什么。它只是一个纯文本文件,包含SQL,您可以在记事本中打开它。因此,没有特殊的“mysql”或“sql server”扩展。

您遇到的错误"Table 'ads' already exists"是因为您试图创建一个已经存在于数据库中的表。 (你看过这个错误吗?)你有几种选择:

  1. 更改SQL这样:

    CREATE TABLE IF NOT EXISTS ads (id bigint(20) ... 
    
  2. 更改SQL这样:

    DROP TABLE IF EXISTS ads; 
    CREATE TABLE ads (id bigint(20) ... 
    
  3. 清除首先在数据库中列出所有表格。

+0

是的,我读过错误,但没有名称为'ads'的表.. – 2010-02-10 06:24:31

+0

我仍然删除了整个数据库,并尝试重新载入它,但同样的错误发生 – 2010-02-10 06:25:07

+0

@Yatendra - 有再看一次。确保选择了正确的数据库。此外,请检查您的SQL脚本中没有多次创建该表。 – nickf 2010-02-10 06:51:40

这要看软件导出此文件。还要检查文件的标题是哪个软件执行的,并分析语法以确定此文件属于哪个文件。还要注意,SQL是microsoft sql server。

+0

@Sarfraz我检查了标题。头文件如下:......-- phpMyAdmin SQL Dump - 版本3.2.4 - http://www.phpmyadmin.net - - 主机:loc – 2010-02-10 06:22:59

+0

@Goel:Then你应该更好地使用phpmyadmin导入这个文件,它肯定会工作没有错误。谢谢 – Sarfraz 2010-02-10 06:50:11

MySQL和Microsoft SQL Server不幸地实现了不同的SQL方言。所以,你的问题的答案:

Q1. So, my question is whether the .sql file generated from MySQL and MS-SQL are different?

是“是的,很有可能”。然而,你显示的具体错误似乎是由于35行上的“Create table”语句被一次又一次地执行,并且不能依赖于这种方言差异,所以原因必须是其他的(如我所不熟悉的“SQLYog”程序所期望的输入中的错误或细微的格式差异)。

是的。 SQL从数据库到数据库的差异很大。尽管大多数数据库都支持大部分数据库,但每个数据库都有许多不兼容的非标准功能和功能,超出了标准规定的范围。

也有许多迁移文档缴费:

MSSQL => MySQL的: http://dev.mysql.com/tech-resources/articles/migrating-from-microsoft.html

的MySQL => MSSQL: http://technet.microsoft.com/en-us/library/cc966396.aspx

有两个明显的事情在你的CREATE TABLE语句MSSQL不支持立即跳出:

ENGINE=InnoDB 
AUTO_INCREMENT=1 

这些都是特定于MySQL的语句。

它看起来像你的脚本多次执行(因为错误发生的行号每次都是相同的)。该错误还表明您正在尝试定义一个已存在的表,这可能是第一次运行此脚本。您可能需要查看脚本如何运行以查看可能会多次执行的原因。

SQL本身对于MySQL来说看起来很好。它不会与SQL Server一起运行。