テーブルのデータを移植したいと思っています
PostgreSQL8.4から出力したCSVをMySQL5.5で取り込みたいのですが、COPYコマンドを使用すると以下のようなエラーが出ます
ERROR 1262 (01000): Row 1 was truncated; it contained more data than there were input columns
PostgreSQLはtext[]型で"{A_1,A_2}"といったデータを出力します
MySQLはPostgreSQLの配列に相当する型がないようなのでBlob型で格納しようと思っています
おそらくデータ内のカンマが原因なのはわかっているのですが、上手くエクスポート・インポートする方法はありませんでしょうか?
No.1ベストアンサー
- 回答日時:
DBMSのバージョン、エクスポート、インポートの実行コマンドを提示していないので推測になりますがMySQL側はLOAD DATA (LOCAL) INFILE でインポートしようとしていると思います。
インポートデータ「"」ダブルクォートされているなら、
OPTIONALLY ENCLOSED BY で対応できませんか?
http://dev.mysql.com/doc/refman/4.1/ja/load-data …
ありがとうございます
回答が遅くなり申し訳ありません
DBMSはPostgreSQLが8.4、MySQLが5.5になります
コマンドは以下の通りです
COPY (SELECT id, TOCHAR(date, 'YYYY-MM-DD hh:mm:ss'), names) FROM table) TO E'/export.txt' WITH CSV null'\\N';
LOAD DATA INFILE "/export.txt" INTO TABLE table FIELDS TERMINATED BY ",";
これで出力すると以下のようなデータが吐かれます
1行目:1,2011-01-01 01:01:00,"{""A_01"",""A_02""}"
2行目:2,2011-01-02 02:02:00,{""A_03""}
配列外側の二重引用符は、要素が二つ以上のときのみ付くようです
FORCE QUOTE id, date, names とすると日付の部分でエラーになります(文字化けしていて内容は不明です)
日付を除いてFORCE QUOTEし、日付のみ自力で二重引用符を付け、
エディタから改行方法をUNIXのLFのみにしたところ無事インポートすることができました
コマンドは以下の通りになります
COPY (SELECT id, TOCHAR(date, 'YYYY-MM-DD hh:mm:ss'), names) FROM table) TO E'/export.txt' WITH CSV FORCE QUOTE id, names null'\\N';
LOAD DATA INFILE "/export.txt" INTO TABLE table FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"';
問題は、件数が数千件ありますので日付もSQLから二重引用符で囲めるようにしたいのですが何か方法はありませんでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・ことしの初夢、何だった?
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessでデータシートに同じデ...
-
ACCESSで容量が50MBになった...
-
テーブルで一番古いレコードだ...
-
IF NOT EXISTを使用するINSERT文
-
ビューのソートについて
-
マテリアライズドビューとスナ...
-
mysqlへの書き込みがリロードす...
-
SQL Server Management Studio...
-
ODBC接続で新しいレコードを追...
-
マスタデータ更新
-
EXCELデータからACCESSデータの...
-
住所のDBテーブル、マスターの...
-
構文エラー : 演算子がありませ...
-
MySQLやSQliteの中のデータ検索...
-
アクセス レコードセットを更...
-
同一テーブルのデータを参照し...
-
結合テーブルでINSERTする方法...
-
VBAでSQLServerへのODBC接続
-
Accessのテーブルデータを一気...
-
特定のデータを持ったレコード...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessでデータシートに同じデ...
-
Oracleで上書きImportはできま...
-
Accessのテーブルデータを一気...
-
テーブルで一番古いレコードだ...
-
ビューのソートについて
-
アクセス レコードセットを更...
-
マテリアライズドビューとスナ...
-
このISAMでは、リンクテーブル・・
-
同一テーブルのデータを参照し...
-
accessでレコード更新直後の反...
-
構文エラー : 演算子がありませ...
-
Access VBAからエクセルに出力...
-
仕事のミス:本番データの削除→...
-
結合テーブルでINSERTする方法...
-
削除したテーブルを元に戻すこ...
-
ORA-01401が表示され、データが...
-
CONNECT BYに関して
-
処理の途中で停止させ、再開さ...
-
IF NOT EXISTを使用するINSERT文
-
Accessの処理速度を速めるため...
おすすめ情報