データベース | データベースにCSVデータをインポートする(PostgreSQL、SQL Server、MySQL)
- 2023.09.08
- データベース
みなさん、こんにちは。
今回は仕事でもよく利用する CSVデータの一括挿入を検証します。
テストデータ
以下のテストデータを利用します。
ChatGPTに作ってもらいました。
下図のように、社員番号、社員名が入っています。
インポート先のテーブル
インポート先のテーブルは以下のように定義します。
Create table employees(
id varchar(5) NOT NULL PRIMARY KEY,
name varchar(50)
)
PostgreSQLの場合
PostgreSQLの場合は、「COPY」を用います。
SQLサーバ内のtmpフォルダの直下に「employees.csv」を置いた場合、以下のように記載します。
COPY employees FROM '/tmp/employees.csv' WITH CSV;
A5SQL経由で確認し、確かに挿入されていることを確認しました。
MS SQL Serverの場合
SQL Serverの場合は BULK INSERT を用います。
SQLサーバ内のtmpフォルダの直下に「employee.csv」を置いた場合、以下のように記載します。
BULK INSERT employees FROM '/tmp/employees.csv' WITH(FORMAT = 'CSV');
インポートできていることを確認しました。
MySQLの場合
MySQLの場合は LOAD DATA INFILE を用います。
MySQLサーバ内のtmpフォルダの直下に「employee.csv」を置いた場合、以下のように記載します。
LOAD DATA INFILE '/tmp/employees.csv' INTO TABLE employees FIELDS TERMINATED BY ',';
CSV取り込み時のdocker runのコマンド
dockerでMySQLの環境を作っているのですが、「–secure-file-priv」オプションを指定しないと、「MySQL server is running with the –secure-file-priv option so it cannot execute this statement」と怒られてしまいました。
以下のようにdocker runします。
docker run --name miseruIT_mySQL -e MYSQL_ROOT_PASSWORD=passw0rd -p 3306:3306 -it mysql --secure-file-priv=/tmp
【おまけ】A5SQL経由でインポートする
PostgreSQLとMSSQLでCSVインポートの方法が異なることが分かりました。
A5SQLを使えば、どちらのDBでもGUI経由でインポートできるような機能があるとのことで、使ってみます。
1)データベース>連続インポート
インポートしたいデータベースをクリックした状態で、データベース>連続インポートを選択します。
2)連続インポートの設定を行う
対象のテーブルとインポートフォルダを指定します。
ファイル名に「テーブル名.csv」とすれば、そちらを指定することができます。
以下のようなポップアップが表示されれば成功です。
このように、アプリケーション側でDBの製品仕様の差を埋めてくれるのは非常に助かりますね!
今回は以上です!
ではまた!
本日のAmazonおすすめ_Top10
2024-10-14 10:54:09時点
-
前の記事
データベース | PostgreSQLを無料で学習する方法 2023.08.16
-
次の記事
データベース | データベースからCSVデータをエクスポートする(PostgreSQL、MySQL、MSSQL) 2023.09.08