ファイナルテーブルにインポートされるCSVファイルをクリーンアップするために、一時テーブルを作成しました。ユーザーがCSVファイルを自由に編集できるという前提があるため、varcharデータ型で一時テーブルを作成しました。PostgreSQLのデータ挿入時にString値をIntegerにキャストする方法は?
一時テーブルがvarchar型を内のすべてのある間だけ整数値(例えばNETWORK_IDとのagent_id)を受け入れファイナルテーブル内の列がある私は、不要なデータを取り除くためにいくつかのクエリを実行するが、問題は今ありますデータ・タイプ。
CREATE TABLE IF NOT EXISTS dummy_table(
network_address varchar(128),
network_alias varchar(64),
network_id varchar(64) NOT NULL,
agent_id varchar(64),
agent_name varchar(64) NOT NULL,
property_value varchar(128)
);
CREATE TABLE IF NOT EXISTS main_table(
network_address varchar(128),
network_alias varchar(64),
network_id int4 NOT NULL,
agent_id int4,
agent_name varchar(64) NOT NULL,
property_value varchar(128)
);
これを行うことで私の試みは、次のとおりです。
INSERT INTO main_table
SELECT network_address,
network_alias,
CAST(network_id AS INTEGER),
CAST(agent_id AS INTEGER),
agent_name,
property_value
FROM dummy_table;
しかし、私はエラーが発生します。
ERROR: column "network_id" is of type integer but expression is of type character
私は多分私のキャストが間違っているか、おそらくダブルキャストが必要とされていると思われるが、私これが当てはまる場合は、どのようにして申請するかについては考えていない。あなたの考えやアイデアは高く評価されます。挿入を行うとき
誤ってテーブル名をタイプしましたが、すでに編集しました。私もあなたのソリューションを試して、はい、私の問題を修正しました。どうもありがとうございました! – Junior