6

MSSQL (Microsoft SQL Server) から MySQL にデータを転送する必要がありましたが、MSSQL からデータを csv としてエクスポートし、この csv を mysql にインポートする Python スクリプトを作成するのが最善の方法でした。これまでのところ、このプロセスはうまく機能しています (これを行う別の方法を探しているわけではありません)。

MSSQL から MySQL へのデータ型変換は次のように行われます。

MSSQL_MySQL_MAP = {
    'nvarchar'  : 'varchar',
    'varchar'   : 'varchar',
    'bit'       : 'boolean',
    'smallint'  : 'smallint',
    'int'       : 'int',
    'datetime'  : 'datetime',
    'timestamp' : 'datetime',
    'ntext'     : 'longtext',
    'real'      : 'double',
    'image'     : 'BLOB',
    'float'     : 'float',
    'money'     : 'decimal',
    }

エクスポートされた csv は、次のコマンドを使用して MySQL にインポートされます。

"""LOAD DATA INFILE '%s/%s' REPLACE INTO TABLE %s FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"'"""

MSSQL に「ビット」データ型があり、エクスポートされた CSV に次のような True または False 文字列が含まれている状況があります。

 22294,501,q4h,12             ,False,False,None,False,None,None,None,0,None,None

True または False 文字列がブール値の 1 または 0 であることを MySQL に認識させ、正しくインポートするにはどうすればよいですか? 現在、次の警告が表示されます。

Warning: Incorrect integer value: 'False' for column 'system_code' at row 7

これを達成できるファイル内データのロードとともにいくつかのパラメーターを渡す方法はありますか?

4

1 に答える 1