2017-07-02 13 views
0

なぜcsvをmysqlにアップロードすると、データの順序が変わるのですか?なぜcsvをmysqlにアップロードすると、データの順序が変わるのですか?

私は、この表を作成しました:私のcsvファイルデータで

CREATE TABLE earthquakes (
idserial VARCHAR(30), 
milliseconds BIGINT, 
latitude FLOAT, 
longitude FLOAT, 
magnitude FLOAT, 
ipocentro FLOAT, 
source VARCHAR(4), 
region SMALLINT, 
PRIMARY KEY(idserial), 
INDEX indice_milliseconds(milliseconds), 
INDEX indice_lat_lng(latitude,longitude), 
INDEX indice_magnitude(magnitude), 
INDEX indice_ipocentro(ipocentro) 
); 

をこの順になっているされています

"1900-07-29-1-0",-2190913260000,-10,165,7.6,0,"U",184 
"1900-10-09-1-0",-2184672720000,60,-142,7.7,0,"U",19 
"1900-10-29-1-0",-2182952940000,11,-66,7.7,0,"U",94 
"1901-08-09-1-0",-2158405140000,-22,170,7.9,0,"U",189 
"1901-08-09-2-0",-2158385220000,40,144,7.5,0,"U",229 
"1902-04-19-1-0",-2136584220000,14,-91,7.5,0,"U",70 
"1902-08-22-1-0",-2125782000000,40,77,7.7,0,"U",320 
"1902-09-22-2-0",-2123108040000,18,146,7.5,0,"U",216 
"1902-09-23-1-0",-2122954920000,16,-93,7.8,0,"U",61 
"1903-01-14-1-0",-2113254780000,15,-98,7.7,0,"U",66 
"1904-06-25-1-0",-2067592461000,51.565,161.417,7.5,15,"U",219 

レコードが最新に最も古い日付から順にソートされます。しかし、ロード後にそうである:

"1904-06-25-1-0",-2067592461000,51.565,161.417,7.5,15,"U",219 
"1903-01-14-1-0",-2113254780000,15,-98,7.7,0,"U",66 
"1902-09-23-1-0",-2122954920000,16,-93,7.8,0,"U",61 
"1902-09-22-2-0",-2123108040000,18,146,7.5,0,"U",216 
"1902-08-22-1-0",-2125782000000,40,77,7.7,0,"U",320 
"1902-04-19-1-0",-2136584220000,14,-91,7.5,0,"U",70 
"1900-07-29-1-0",-2190913260000,-10,165,7.6,0,"U",184 
"1900-10-09-1-0",-2184672720000,60,-142,7.7,0,"U",19 
"1900-10-29-1-0",-2182952940000,11,-66,7.7,0,"U",94 
"1901-08-09-1-0",-2158405140000,-22,170,7.9,0,"U",189 
"1901-08-09-2-0",-2158385220000,40,144,7.5,0,"U",229 

彼らは最初の順序を尊重していません....

iは PRIMARY KEYのような文字列であるフィールド idserial(最初の値)(独自の)持っていることだろうオートインクリメントでは数値ではありませんか?

+2

ORDER BY句で選択しない限り、テーブル内のデータの順序は全く意味がありません。そうしたときに、 'ORDER BY DateTimeColName'が必要になります(列がdatetimeとして正しく設定されていると仮定します)タイプ)。 @AlexK。 –

+0

私は最後の10レコードを抽出する場合は、クエリで私はORDER BYを指定する必要がありますか? – Borja

+1

はい - 「最後」は、ORDER BYがない場合は何も意味しないため、最初から最後まで並べ替えるものをデータベースに伝えます。 @AlexK。 –

答えて

2

SQLテーブルは、の順不同であるを表します。特定の順序でデータが必要な場合は、テーブルを照会するときにorder by句が必要です。

自動増分ID列(私が推奨する)を追加する場合は、その列にCSVファイルの元の順序を保持させることができます。その列で表を作成し、load dataステートメントの他の列をすべて一覧表示するだけです。

+0

問題は "idserial"(つまり文字列値)は、 "id autoincrement"のようなものです。私のテーブルが大きすぎます(4つのインデックスと1000000以上のレコードを持つ8つのフィールド)。私が "idserial"のidと他のインデックスを追加しても、テーブルはさらに増加する – Borja

+4

@Borja。 。 。あなたが100万行のテーブルのインデックスを心配している場合は、リソースが制限された厳しい環境(Apple Watchと思っています)か、データベースを理解できません。 –

+0

両方のこと:D今プライマリキーのようなIDを追加しようとしましたが、注文は変更されませんでした(Y) – Borja

関連する問題