В настоящее время я заинтересован в подготовке данных, но у меня есть некоторые проблемы с сценарием SQL, над которым я работаю.
Я нашел файл .csv со статистикой уровня преступности, как вы можете видеть здесь:
Скриншот файла .csv
Теперь я хочусделать некоторые изменения в столбцах с 2016
до 2008
.Все числа должны быть изменены на 1, а все двоеточия - на 0 для дальнейшей подготовки и анализа данных.Я решил использовать VARCHAR
как тип данных для столбцов.Из-за этого я могу изменить двоеточия на 0, но теперь я не могу изменить числа на 1. Это сценарий на данный момент:
DROP TABLE IF EXISTS crime;
CREATE TABLE crime (
id SERIAL,
age VARCHAR,
sex CHAR(1),
unit VARCHAR,
geo VARCHAR,
"2016" VARCHAR,
"2015" VARCHAR,
"2014" VARCHAR,
"2013" VARCHAR,
"2012" VARCHAR,
"2011" VARCHAR,
"2010" VARCHAR,
"2009" VARCHAR,
"2008" VARCHAR,
PRIMARY KEY (id)
);
\unset ON_ERROR_STOP
COPY crime(age, sex, unit, geo, "2016", "2015", "2014", "2013", "2012", "2011", "2010", "2009", "2008")
FROM 'path'
delimiter ';' CSV HEADER;
ALTER TABLE crime DROP COLUMN IF EXISTS unit, DROP COLUMN IF EXISTS age;
UPDATE crime SET "2016" = REPLACE("2016", ':', '0'),
"2015" = REPLACE("2015", ':', '0'),
"2014" = REPLACE("2014", ':', '0'),
"2013" = REPLACE("2013", ':', '0'),
"2012" = REPLACE("2012", ':', '0'),
"2011" = REPLACE("2011", ':', '0'),
"2010" = REPLACE("2010", ':', '0'),
"2009" = REPLACE("2009", ':', '0'),
"2008" = REPLACE("2008", ':', '0');
Я надеюсь, что кто-то может мне помочь.