ショコラ
Oracle から MySQL にデータを変換するには?
昔、PHP で変換するプログラムを作ったのでメモっておきますね。
※このままでは動きません。
もっさん先輩
例
// カラムの情報を取得します。
$header = $cols = $types = [];
$sql = "SELECT * FROM all_tab_columns WHERE table_name='{$table}' ORDER BY column_id";
foreach ($pdo->query($sql) as $row) {
$col = strtolower($row['column_name']);
$header[] = $col;
$cols[] = ('DATE' == $row['data_type']) ? "TO_CHAR({$col},'YYYY-MM-DD HH24:MI:SS') AS {$col}" : $col;
$types[$col] = $row['data_type'];
}
// ヘッダーを出力します。
$fp = fopen($table.'.dmp','w');
fputs($fp,implode(',',$header)."\r\n");
// データを出力します。
$sql = "SELECT ".implode(',',$cols)." FROM {$table}";
foreach ($pdo->query($sql) as $row) {
$data = [];
foreach ($types as $col => $type) {
$val = $row[$col];
if ('' == $val) {
$val = '\\N';
} else if (in_array($type,['VARCHAR2','CHAR'])) {
$val = '"'.mb_ereg_replace('"','""',$val).'"';
}
$data[] = $val;
}
fputs($fp,implode(',',$data)."\r\n");
}
fclose($fp);