質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Q&A

2回答

1968閲覧

sqlite2→sqlite3への変換で文字列の数値(TEXT)が数値(DECIMAL)として認識されてしまう

KentaroSasayama

総合スコア19

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

0グッド

1クリップ

投稿2019/05/15 00:48

前提・実現したいこと

sqlite2で動いているシステムがあり、sqlite3へバージョンアップをしたいのですが、変換時に問題があり困っています。

発生している問題・エラーメッセージ

https://www.tokyocafe.net/slog/?eid=663"
上記URLを参考に以下のコマンドで変換をかけました。
sqlite test.sqlite2 .dump | sqlite3 test.sqlite3

CREATE TABLE 'TEST' ( 'tel' TEXT );

INSERT INTO TEST ( tel ) VALUES ('09099999999');

上記のようなテーブルのTEXT項目に電話番号のような文字列の数値が入ったデータをsqlite3へ変換すると数値して認識されてしまい、先頭の0(ゼロ)が削除されてしまいます。

何か回避する方法はありませんでしょうか。

試したこと

sqlite2のデータを.output ./test.txt のコマンドでdmupを吐き出したところ、sqlは以下のようになっていて、コーテーション付いていませんでした。

INSERT INTO TEST ( tel ) VALUES (09099999999);

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

元々のデータが'で括られていないのではありませんか?
dumpデータではなく、テーブルの内容をエクスポートして'で括られているかどうか確認してみて下さい。

投稿2019/05/15 02:16

sazi

総合スコア25430

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

SQLの掟では文字列はシングルクォートで囲まなければなりません。
SQLiteのバージョンが上がって掟を守るのがちょっと厳しくなったのでしょう。

投稿2019/05/15 00:56

Orlofsky

総合スコア16419

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KentaroSasayama

2019/05/15 01:23

TEXT項目をDUMPでエクスポートするのにシングルクォートが付いてないのが解せません。 エクスポートを自前で組まないとダメでしょうか。
Orlofsky

2019/05/15 01:49

ソフトウェアにバグは付物だし、バグを気にするなら最初からSQLiteをなんて使う方が悪いですし、慣れた設計者なら文字列の左にゼロを付けるようなコード体系は避けただろうに。 データ量が少なければ dump したファイルをエディタで修正する方法もありです。
maisumakun

2019/05/15 01:58

> 慣れた設計者なら文字列の左にゼロを付けるようなコード体系は避けただろうに。 電話番号や郵便番号のようにコード体系が所与のものの場合はいかんともしがたいかと…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問