0

チュートリアルを実行する目的で、米国政府統計のスプレッドシートを mysql テーブルにインポートしました。

ただし、米国政府は書式設定を変更して、数値の一部を引用符で囲み、文字列に変換したようです。

たとえば、これは、ダウンロードしたはずのタブ区切りデータの形式です。

CN010010 01 001 「アラバマ州オートーガ郡」 2005 23831 23061 770 3.2

ただし、次のようになります: CN010010 01 001 "Autauga County, AL" 2005 "23,831 " "23,061 " 770 3.2

その結果、整数としてインポートしたいデータの 2 つのキー列 (23831 ビットと 23061 ビット) が 0 として登録されます。おそらく、データ型を満たしていないためです。

現在および将来、この問題を解決するための最善の解決策は何ですか?

前もって感謝します。

4

1 に答える 1

2

「コンマ」は問題を引き起こす可能性があります。これに load data infile を使用していますか?

テーブル定義を仮定します:

CREATE TABLE `t` (
  `code` varchar(255) DEFAULT NULL,
  `state` char(2) DEFAULT NULL,
  `city` char(3) DEFAULT NULL,
  `name` varchar(255) DEFAULT NULL,
  `year` int(11) DEFAULT NULL,
  `pop1` int(11) DEFAULT NULL,
  `pop2` int(11) DEFAULT NULL,
  `diff` int(11) DEFAULT NULL,
  `ratio` float DEFAULT NULL
)

以下は、ファイルをインポートします。

load data local infile "test.txt"
into table t
columns terminated by '\t'
optionally enclosed by '"'
(code, state, city, name, year, @var1, @var2, diff, ratio)
set pop1=replace(@var1,",", ""),
    pop2=replace(@var2, ",", "");

次の行を挿入します。

コード:CN010010
状態: 01
 都市: 001
 名前: アラバマ州オートーガ郡
 年: 2005
 ポップ1: 23831
 ポップ2: 23061
 差分: 770
比率: 3.2
于 2010-11-17T20:48:44.193 に答える