|
カテゴリ:Linux
先日、CSVファイルをMySQLに取り込むのに、苦労しましたが、
またまた、CSVを取り込まなくてはならなくなった。 しかも、前回のCSVよりも、かなり厄介な感じ。 SQLServerのデータを移行することになった。 その移行先がMySQL。 データには、改行が含まれていたり、NULLが多かったり、 データ中にカンマなど、CSVのデータ区切り文字に使いたい文字が万遍なく使われています。 CSV化して、MySQLに取り込むと苦労しそうな予感がひしひしと・・・。 試に、CSV化して、LOAD DATAコマンドを実行してみましたが、 次から次へとエラーとなり、終わりが見えなかったので、別の方法を探してみました。 辿り着いた方法は、CSVではなく、XMLファイルにして取り込むことです。 はじめてやってみましたが、これがとても楽ちん。 CSVファイルにして、LOAD DATAコマンドで取り込むと、 テーブルとCSVファイルの項目数や、データ型が一致していないとことごとく、エラーになります。 そのため、色々と事前に加工してから、INPUTデータとして利用します。 これが、LOAD XMLコマンドだと、事前加工なしのファイルを一回で取り込むことができました。 実際にやった手順 1.移行先のMySQLにテーブル作成 テーブルは、慣れた方法で作成します。 特別なことは必要ありません。 私は、地道に、Create Tableコマンドで作成しました。 スクリプトにしておけば、簡単にテーブルを作り直すことができます。 2.SQLServerに、MS-ACCESSで接続し、移行対象のテーブルをリンク ここも特別はことは必要ありません。 リンクテーブルでデータが表示できる状態になればOKです。 3.対象テーブルのデータをリンクテーブル経由で、XMLファイルに保存 この時、文字コードをSJISからUTF-8に変換しました。 変換するかどうかの、チェックを入れるだけ。 このタイミングで、文字コードを変換するのが、一番手間がないと思います。 4.XMLファイルをMySQLクライアントを実行できる環境に転送 特別なことは必要ありません。 5.必要であれば、XMLファイルの改行コードを、転送先の環境にあわせて変換 私は、Linux環境を使ったので、Windowsの改行コード【Ctrl+M(^M)】を削除しました。 6.LOAD XMLコマンドを実行して、MySQLへロード 以上 ロード時にエラーが出なかったので、エラー時の対応は、やってみないとわかりません。 XMLファイルの取り込み、思ったよりも使えそうです。 お気に入りの記事を「いいね!」で応援しよう
Last updated
2020.09.11 00:10:48
コメント(0) | コメントを書く
[Linux] カテゴリの最新記事
|