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