html_url,issue_url,id,node_id,user,created_at,updated_at,author_association,body,reactions,issue,performed_via_github_app
https://github.com/simonw/sqlite-utils/issues/490#issuecomment-1258437060,https://api.github.com/repos/simonw/sqlite-utils/issues/490,1258437060,IC_kwDOCGYnMM5LAjnE,9599,2022-09-26T18:24:44Z,2022-09-26T18:24:44Z,OWNER,Just saw your great write-up on this: https://jeqo.github.io/notes/2022-09-24-ingest-logs-sqlite/,"{""total_count"": 1, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 1, ""rocket"": 0, ""eyes"": 0}",1382457780,
https://github.com/simonw/sqlite-utils/issues/490#issuecomment-1257072258,https://api.github.com/repos/simonw/sqlite-utils/issues/490,1257072258,IC_kwDOCGYnMM5K7WaC,6180701,2022-09-24T22:01:05Z,2022-09-24T22:01:05Z,NONE,"For completeness, the regex requires a bit more dark magic to capture the following lines, here is a _working_ expression: https://regex101.com/r/rsuEcs/1
```
sqlite-utils insert /tmp/log.db log multiline.log --text --convert ""
import re
r = re.compile(r'^(?P\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2})(?:\:\s)(?P(.*\s\s.*|.*)+)', re.MULTILINE)
def convert(text):
return [m.groupdict() for m in r.finditer(text)]
""
```
```
BEGIN TRANSACTION;
CREATE TABLE [log] (
[datetime] TEXT,
[log] TEXT
);
INSERT INTO ""log"" VALUES('2022-03-01T12:04:52','Here is a log message
that spans multiple lines');
INSERT INTO ""log"" VALUES('2022-03-01T12:04:52','This is a single line');
INSERT INTO ""log"" VALUES('2022-03-01T12:04:52','Here is another message
that spans multiple lines');
COMMIT;
```","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1382457780,
https://github.com/simonw/sqlite-utils/issues/490#issuecomment-1257063174,https://api.github.com/repos/simonw/sqlite-utils/issues/490,1257063174,IC_kwDOCGYnMM5K7UMG,6180701,2022-09-24T20:50:15Z,2022-09-24T20:50:15Z,NONE,🤯 this is beautiful. Thanks @simonw !,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1382457780,
https://github.com/simonw/sqlite-utils/issues/490#issuecomment-1256428818,https://api.github.com/repos/simonw/sqlite-utils/issues/490,1256428818,IC_kwDOCGYnMM5K45US,9599,2022-09-23T16:37:58Z,2022-09-23T16:38:35Z,OWNER,"It should be possible to achieve this with the `--text` option: https://sqlite-utils.datasette.io/en/stable/cli.html?highlight=text#convert-with-text
Given an example like this in `multiline.log`:
```
2022-03-01T12:04:52: Here is a log message
that spans multiple lines
2022-03-01T12:04:52: This is a single line
2022-03-01T12:04:52: Here is another message
that spans multiple lines
```
You should be able to run something like this:
```
sqlite-utils insert /tmp/log.db log multiline.log --text --convert ""
import re
r = re.compile(r'^(?P\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}):(?P.*)', re.MULTILINE)
def convert(text):
return [m.groupdict() for m in r.finditer(text)]
""
```
After running this I get:
```
sqlite-utils rows /tmp/log.db log
[{""datetime"": ""2022-03-01T12:04:52"", ""log"": "" Here is a log message""},
{""datetime"": ""2022-03-01T12:04:52"", ""log"": "" This is a single line""},
{""datetime"": ""2022-03-01T12:04:52"", ""log"": "" Here is another message""}]
```","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1382457780,