0

.sql ファイルがあり、それを MySQL データベースにロードしたいと考えています。どのデータベース (MySQL または MS-SQL) から作成されたのかわかりません。

今、そのファイルを MySQL データベースにインポートしようとしています。そのファイルのインポートおよび実行中にエラーが表示されます。

Q1. それで、私の質問は、MySQL と MS-SQL から生成された .sql ファイルが異なるかどうかです。

注: ファイルのインポートに SQLYog ソフトウェア (MySQL のグラフィカル インターフェイス) を使用しています。

エラーは次のとおりです。

クエリ: CREATE TABLE ads( idbigint(20) NOT NULL auto_increment, city_idint(11) NOT NULL, typetext collat​​e utf8_bin NOT NULL, towntext collat​​e utf8_bin NOT NULL, addresstext collat​​e utf8_bin NOT NULL, pricetext collat​​e utf8_bin NOT NULL, infotext collat​​e utf8_bin NOT NULL, linktext collat​​e utf8_bin NOT NULL, hasImageint(11) NOT NULL, languagevarchar(2) collat​​e utf8_bin NOT NULL, time_addedvarchar(255) collat​​e utf8_bin NOT NULL, PRIMARY KEY ( id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1

エラーが発生した場所:2009-09-08 17:41:01 行番号:35 エラー コード: 1050 - テーブル 'ads' は既に存在します

クエリ: CREATE TABLE ads( idbigint(20) NOT NULL auto_increment, city_idint(11) NOT NULL, typetext collat​​e utf8_bin NOT NULL, towntext collat​​e utf8_bin NOT NULL, addresstext collat​​e utf8_bin NOT NULL, pricetext collat​​e utf8_bin NOT NULL, infotext collat​​e utf8_bin NOT NULL, linktext collat​​e utf8_bin NOT NULL, hasImageint(11) NOT NULL, languagevarchar(2) collat​​e utf8_bin NOT NULL, time_addedvarchar(255) collat​​e utf8_bin NOT NULL, PRIMARY KEY ( id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1

エラーが発生した場所:2009-09-08 17:41:21 行番号:35 エラー コード: 1050 - テーブル 'ads' は既に存在します

クエリ: CREATE TABLE ads( idbigint(20) NOT NULL auto_increment, city_idint(11) NOT NULL, typetext collat​​e utf8_bin NOT NULL, towntext collat​​e utf8_bin NOT NULL, addresstext collat​​e utf8_bin NOT NULL, pricetext collat​​e utf8_bin NOT NULL, infotext collat​​e utf8_bin NOT NULL, linktext collat​​e utf8_bin NOT NULL, hasImageint(11) NOT NULL, languagevarchar(2) collat​​e utf8_bin NOT NULL, time_addedvarchar(255) collat​​e utf8_bin NOT NULL, PRIMARY KEY ( id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1

エラーが発生した場所:2009-09-08 17:41:35 行番号:35 エラー コード: 1050 - テーブル 'ads' は既に存在します

クエリ: CREATE TABLE ads( idbigint(20) NOT NULL auto_increment, city_idint(11) NOT NULL, typetext collat​​e utf8_bin NOT NULL, towntext collat​​e utf8_bin NOT NULL, addresstext collat​​e utf8_bin NOT NULL, pricetext collat​​e utf8_bin NOT NULL, infotext collat​​e utf8_bin NOT NULL, linktext collat​​e utf8_bin NOT NULL, hasImageint(11) NOT NULL, languagevarchar(2) collat​​e utf8_bin NOT NULL, time_addedvarchar(255) collat​​e utf8_bin NOT NULL, PRIMARY KEY ( id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1

エラーが発生した場所:2009-09-08 17:42:07 行番号:35 エラー コード: 1050 - テーブル 'ads' は既に存在します

クエリ: 1 スタンフォード大学 6700 http://www.orkut.co.in . . .

4

5 に答える 5

3

ファイル拡張子「.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. 最初に DB 内のすべてのテーブルをクリアします。

于 2010-02-10T06:22:27.127 に答える
2

MySQLとMicrosoftSQLServerは、残念ながら、SQLの異なる方言を実装しています。だから、あなたの質問への答え:

Q1。だから、私の質問は、MySQLとMS-SQLから生成された.sqlファイルが異なるかどうかです。

「はい、かなり可能性があります」です。ただし、表示されている特定のエラーは、35行目の「Createtable」ステートメントが何度も何度も実行されていることが原因であるように見えます。これは、そのような方言の違いに依存することはできないため、原因は次のとおりです。その他のもの(私がよく知らない「SQLYog」プログラムが入力として期待するもののバグや微妙なフォーマットの違いなど)。

于 2010-02-10T06:24:52.677 に答える
1

はい。SQLはデータベースごとに大きく異なります。ほとんどのデータベースが多くをサポートする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がサポートしていない2つの明らかなことがあり、どちらがすぐに飛び出しますか。

ENGINE=InnoDB
AUTO_INCREMENT=1

これらは両方ともMySQL固有のステートメントです。

于 2010-02-10T06:28:46.770 に答える
1

このファイルをエクスポートしたソフトウェアによって異なります。また、ファイルのヘッダーを調べて、どのソフトウェアがそれを実行したかを確認し、構文を分析して、このファイルがどこに属しているかを判断します。また、SQL は Microsoft SQL Server であることにも注意してください。

于 2010-02-10T06:20:14.253 に答える
0

スクリプトが複数回実行されているようです (エラーが発生する行番号は毎回同じであるため)。このエラーは、既に存在するテーブルを定義しようとしていることも示しています。これは、このスクリプトが最初に実行されたときのものである可能性があります。スクリプトがどのように実行されているかを調べて、スクリプトが複数回実行される理由を確認することをお勧めします。

SQL 自体は、MySQL では問題ないようです。SQL Server では実行できません。

于 2010-02-10T06:35:42.897 に答える