2017-10-20 5 views
0

私たちのデータを不明なSQLデータベースにエクスポートします。それは、mysql、mssql、postgresqlとすることができます。そして簡単なことさえも問題を引き起こします。たとえば、MySQLでは、識別子の二重引用符はANSI_QUOTES = trueの場合にのみ機能します(デフォルトではfalse)。 mssqlの二重引用符は、QUOTED_IDENTIFIER = ONのときにのみ機能します。 MySQLがSQL準拠のコードをどのように解釈するかについてのいくつかの問題もあります。たとえば、明示的に指定された制約名を無視し、その規則に従って名前を設定することがあります。 MS SQLはBLOBという名前のデータ型もサポートしていません。 SQL準拠のODBCをエクスポートするスマートな方法はありますか?それとも、何らかの形でデータベース名を照会し、SQLと互換性のある方法で接続を構成する必要がありますか?他にアンドレイBelykhで指摘したように(あなたがたSQLGetInfoを使用してSQL_IDENTIFIER_QUOTE_CHARansi sql準拠の方法でODBC経由でテーブルを作成するには?

答えて

0

たSQLGetInfoを求めることができ、識別子を引用するための具体的

0

SQL_IDENTIFIER_QUOTE_CHARを照会するために使用することができ、それは私の設定ではSQL Serverの "返します短い答え)。

私はDBMSの名前を取得するためにSQL_DBMS_NAMEパラメータでてSQLGetInfoを使用しています。それは、 "Microsoft SQL Serverを" 返すSQLサーバの場合。それから私は、適用することができますSQL Server固有のコード。 ブロブを格納するSQLサーバーの方法は、filestreamですが、制限があります(ファイルにアクセスするにはWindows認証を使用する必要があります)。したがって、BLOBがサポートされていない場合(SQLGetTypeInfoでもチェックできます)、私はvarbinary(max)を使用します。これは2ギガバイトで制限されています。 mysqlでは65KBに制限されているため、デフォルトではvarbinaryを使用できません。 AFAIKのカスタムコードは、異なるdbmsをサポートするために必要です。

+0

ありがとうございます。 – pusheax

関連する問題