Umami 允许您将数据导入 Umami Cloud。每次导入只能处理一个网站。如果您有大量的网站或大量数据要导入,请联系 support@umami.is。
导入文件为 CSV 格式,包含表头和引号。列必须按照以下格式和顺序。 只要遵循该格式并填写非可选列,导入将接受来自外部系统的数据。下面将提供从自托管版本的 Umami 导入数据到 PostgreSQL 和 MySQL 的指南。
网站事件
website_id
: (uuid) 网站关键标识符。session_id
: (uuid) 会话关键标识符。visit_id
: (uuid) 访问关键标识符。event_id
: (uuid) 事件关键标识符。hostname
: (string)(可选) 主机名称。browser
: (string)(可选) 浏览器名称。os
: (string)(可选) 操作系统名称。device
: (string)(可选) 设备名称(例如:移动设备)screen
: (string)(可选) 屏幕分辨率(例如:“1920x1080”)language
: (string)(可选) 访问者的语言(例如:“en-US”)country
: (string)(可选) 国家名称。subdivision1
: (string)(可选) 一级区域/州/省名称。subdivision2
: (string)(可选) 二级区域/州/省名称。city
: (string)(可选) 城市名称。url_path
: (string) URL 路径名称。url_query
: (string)(可选) URL 查询参数名称。referrer_path
: (string)(可选) 引荐路径名称。referrer_query
: (string)(可选) 引荐查询参数名称。referrer_domain
: (string)(可选) 引荐域名名称。page_title
: (string)(可选) 页面标题名称。event_type
: (int) 1. 页面查看 2. 自定义事件。event_name
: (string)(可选) 事件名称。tag
: (string)(可选) 标签名称。created_at
: (datetime) 创建日期的 UTC 时间戳。事件数据
website_id
: (uuid) 网站关键标识符。session_id
: (uuid) 会话关键标识符。event_id
: (uuid) 事件关键标识符。url_path
: (string) URL 路径名称。event_name
: (string) 事件名称。event_key
: (string) 事件关键名称。string_value
: (string) 字符串格式的事件关键值。number_value
: (decimal) 数字格式的事件关键值。date_value
: (string) 日期格式的事件关键值。data_type
: (int) 1. 字符串 2. 数字 3. 布尔值 4. 日期 5. 数组created_at
: (datetime) 创建日期的 UTC 时间戳。您将利用 PostgreSQL 的 \copy 命令。要使用此命令,您需要访问 psql 终端。
psql -h <主机名或 IP 地址> -p <远程机器的端口号> -d <数据库> -U <用户名>
\copy
不支持多行 SQL 语句。要绕过此限制,您需要在使用该命令之前创建一个视图。如果使用的模式不是 public
,则需要在以下语句中指定模式(例如:<schema>.website_event
)。
网站事件
CREATE VIEW website_event_import AS
SELECT we.website_id,
we.session_id,
we.visit_id,
we.event_id,
s.hostname,
s.browser,
s.os,
s.device,
s.screen,
s.language,
s.country,
s.subdivision1,
s.subdivision2,
s.city,
we.url_path,
we.url_query,
we.referrer_path,
we.referrer_query,
we.referrer_domain,
we.page_title,
we.event_type,
we.event_name,
we.tag,
TO_CHAR(we.created_at, 'YYYY-MM-DD HH24:MI:SS') created_at
FROM website_event we
JOIN session s
ON s.session_id = we.session_id;
您现在可以使用 \copy
psql 命令。将 website id
和 filepath
替换为下面命令中的值。
website id
可在自托管的 Umami 实例中通过导航到 网站 并单击 编辑 按钮找到。
\COPY (SELECT * FROM website_event_import WHERE website_id = '<website id>') TO '<filepath>.csv' WITH (FORMAT CSV, HEADER TRUE, FORCE_QUOTE *)
事件数据
与 网站事件 的指令相同,但需要创建自己的视图。
CREATE VIEW event_data_import AS
SELECT we.website_id,
we.session_id,
we.event_id,
we.url_path,
we.event_name,
ed.data_key,
ed.string_value,
ed.number_value,
TO_CHAR(ed.date_value, 'YYYY-MM-DD HH24:MI:SS') date_value,
ed.data_type,
TO_CHAR(we.created_at, 'YYYY-MM-DD HH24:MI:SS') created_at
FROM event_data ed
JOIN website_event we
ON we.event_id = ed.website_event_id;
复制命令
\COPY (SELECT * FROM event_data_import WHERE website_id = '<website id>') TO '<filepath>.csv' WITH (FORMAT CSV, HEADER TRUE, FORCE_QUOTE *)
您将利用 MySQL 的 SELECT ... INTO OUTFILE 命令。要使用此命令,您需要访问 MySQL 客户端。
mysql --host=localhost --user=myname --password=password mydb
mysql -e "SELECT ..."
的客户端命令生成该主机上的文件。找到适合放置 csv 的目录。这将是 OUTFILE
文件路径。
SHOW VARIABLES LIKE "secure_file_priv";
如果返回 /var/lib/mysql-files/
,则您的文件路径可以是 /var/lib/mysql-files/my-import.csv
。
网站事件
CREATE VIEW website_event_import AS
SELECT we.website_id,
we.session_id,
we.visit_id,
we.event_id,
COALESCE(s.hostname, '') hostname,
COALESCE(s.browser, '') browser,
COALESCE(s.os, '') os,
COALESCE(s.device, '') device,
COALESCE(s.screen, '') screen,
COALESCE(s.language, '') language,
COALESCE(s.country, '') country,
COALESCE(s.subdivision1, '') subdivision1,
COALESCE(s.subdivision2, '') subdivision2,
COALESCE(s.city, '') city,
COALESCE(we.url_path, '') url_path,
COALESCE(we.url_query, '') url_query,
COALESCE(we.referrer_path, '') referrer_path,
COALESCE(we.referrer_query, '') referrer_query,
COALESCE(we.referrer_domain, '') referrer_domain,
COALESCE(we.page_title, '') page_title,
we.event_type,
COALESCE(we.event_name, '') event_name,
COALESCE(we.tag, '') tag,
DATE_FORMAT(we.created_at, '%Y-%m-%d %T') created_at
FROM website_event we
JOIN session s
ON s.session_id = we.session_id;
您现在可以使用 SELECT ... INTO OUTFILE
MySQL 命令。将 website id
和 filepath
替换为下面命令中的值。
website id
可在自托管的 Umami 实例中通过导航到 网站 并单击 编辑 按钮找到。
该命令不支持表头,因此您必须硬编码这些内容。
SELECT 'website_id',
'session_id',
'visit_id',
'event_id',
'hostname',
'browser',
'os',
'device',
'screen',
'language',
'country',
'subdivision1',
'subdivision2',
'city',
'url_path',
'url_query',
'referrer_path',
'referrer_query',
'referrer_domain',
'page_title',
'event_type',
'event_name',
'tag',
'created_at'
UNION
SELECT *
INTO OUTFILE '<filepath>.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'
FROM website_event_import
WHERE website_id = '<website id>';
事件数据
与 网站事件 的指令相同,但需要创建自己的视图。
CREATE VIEW event_data_import AS
SELECT we.website_id,
we.session_id,
we.event_id,
we.url_path,
we.event_name,
ed.data_key,
COALESCE(ed.string_value, '') string_value,
COALESCE(ed.number_value, '') number_value,
COALESCE(DATE_FORMAT(ed.date_value, '%Y-%m-%d %T'), '') date_value,
ed.data_type,
DATE_FORMAT(we.created_at, '%Y-%m-%d %T') created_at
FROM event_data ed
JOIN website_event we
ON we.event_id = ed.website_event_id;
输出文件命令
SELECT 'website_id',
'session_id',
'event_id',
'url_path',
'event_name',
'event_key',
'string_value',
'number_value',
'date_value',
'data_type',
'created_at'
UNION
SELECT *
INTO OUTFILE '<filepath>.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'
FROM event_data_import
WHERE website_id = '<website id>';
登录 Umami,导航到 账户。点击 数据 标签,然后点击 导入 按钮。
填写表单详细信息,然后点击 导入 按钮。
加载指示器将显示,直到文件完全导入。对于较大的数据集,这可能需要一些时间。 导入完成后,它应如下所示。