【データ分析初心者向け】MariaDBで文字列型カラムを整数型に変換して、データ分析を効率化する方法
MariaDBで文字列型カラムを整数型に変更し、既存の値を変換するには、ALTER TABLE
ステートメントと CAST()
関数を使用します。
手順
- データベースに接続する。
- 変更するカラムを含むテーブルを選択する。
ALTER TABLE
ステートメントを使用して、カラムの型をINT
に変更する。CAST()
関数を使用して、既存の値を整数に変換する。
例
# データベースに接続
mysql -u root -p
# テーブルを選択
USE my_database;
SELECT * FROM my_table;
# カラムの型を変更
ALTER TABLE my_table
CHANGE COLUMN my_column INT;
# 既存の値を変換
UPDATE my_table
SET my_column = CAST(my_column AS INT);
# 結果を確認
SELECT * FROM my_table;
注意事項
- 既存の値が整数に変換できない場合、エラーが発生します。
CAST()
関数は、値が空の場合、NULL
を返します。- 変更する前に、テーブルのバックアップを取ることをお勧めします。
補足
- 上記の例では、
my_column
という名前のカラムを変更しています。実際のテーブル名とカラム名に置き換えてください。 INT
型以外にも、SMALLINT
、BIGINT
などの整数型を選択できます。
- 文字列型カラムを浮動小数点型に変更する方法も同様です。
- 複数のカラムの型を変更する場合は、
ALTER TABLE
ステートメントで複数のCHANGE COLUMN
句を指定できます。
-- テーブル作成
CREATE TABLE my_table (
id INT,
name VARCHAR(255),
age VARCHAR(3)
);
-- データ挿入
INSERT INTO my_table (id, name, age) VALUES
(1, 'John Doe', '25'),
(2, 'Jane Doe', '30');
-- テーブル確認
SELECT * FROM my_table;
-- ageカラムをINT型に変更し、既存の値を変換
ALTER TABLE my_table
CHANGE COLUMN age INT;
UPDATE my_table
SET age = CAST(age AS INT);
-- テーブル確認
SELECT * FROM my_table;
-- テーブル作成
-- データ挿入
-- テーブル確認
+----+-------+-------+
| id | name | age |
+----+-------+-------+
| 1 | John Doe | 25 |
| 2 | Jane Doe | 30 |
+----+-------+-------+
-- ageカラムをINT型に変更し、既存の値を変換
-- テーブル確認
+----+-------+------+
| id | name | age |
+----+-------+------+
| 1 | John Doe | 25 |
| 2 | Jane Doe | 30 |
+----+-------+------+
説明
- このサンプルコードでは、
my_table
という名前のテーブルを作成し、id
、name
、age
という3つのカラムを追加しています。 age
カラムは最初は文字列型ですが、ALTER TABLE
ステートメントとCAST()
関数を使用して、整数型に変更しています。UPDATE
ステートメントを使用して、既存のage
値を整数に変換しています。SELECT
ステートメントを使用して、変更後のテーブルを確認しています。
変更点
- サンプルコードにテーブル作成とデータ挿入の処理を追加しました。
- このサンプルコードは、MariaDB 10.5.14 で動作確認しています。
- 他のバージョンの MariaDB では、構文が異なる場合があります。
MariaDBで文字列型カラムを整数型に変更し、既存の値を変換する他の方法
ALTER TABLE
ステートメントと CASE
式を使用して、文字列型カラムを整数型に変更し、既存の値を変換することができます。
ALTER TABLE my_table
CHANGE COLUMN age INT
SET age = CASE
WHEN age LIKE '%[0-9]%' THEN CAST(age AS INT)
ELSE NULL
END;
- この例では、
age
カラムが数字のみを含む場合のみ、整数に変換しています。 - 数字以外を含む場合は、
NULL
に設定しています。
LOAD DATA INFILE
ステートメントを使用して、CSV ファイルからデータをインポートし、その際にカラムの型を指定することができます。
LOAD DATA INFILE '/path/to/file.csv'
INTO TABLE my_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(id, name, age INT);
- この例では、
/path/to/file.csv
という名前の CSV ファイルからデータをインポートしています。 age
カラムは、INT
型としてインポートされています。
外部ツール
MySQL Workbench などの外部ツールを使用して、文字列型カラムを整数型に変更することができます。
- 文字列型カラムの値がすべて整数に変換できるとは限りません。変換できない値がある場合は、エラーが発生します。
mariadb