Elixir Ecto: Postgresql에 바이너리 데이터 삽입
1784 단어 postgresqlectoelixir
Postgresql
에 어떻게 이진 데이터를 삽입하는지 보여준다.우선 Postgresql 중 유일한 이진 데이터의 유형은
bytea
, 표시
또는
임을 알아야 한다.Oracle 및 MySQL에 해당blob
.다음은 예이다
defmodule Bytea.Model.Test do
import Ecto.Changeset
use Ecto.Schema
alias Bytea.Repo
schema "tests" do
field :photo, :binary
timestamps()
end
def changeset(struct, params \\ %{}) do
struct
|> cast(params, [:photo])
|> validate_required([:photo])
end
def insert(map) do
Map.merge(%__MODULE__{}, map) |> Repo.insert
end
def test_insert do
{:ok, contents} = File.read("/tmp/FB7D22A5-924E-4DA5-AC93-5D815FA1AEA8.png")
insert(%{photo: contents})
end
end
스크립트 마이그레이션
defmodule Bytea.Repo.Migrations.CreateTest do
use Ecto.Migration
def change do
create table(:tests) do
# :binary, mix ecto.migrate :photo :bytea
add :photo, :bytea
timestamps()
end
end
end
물론, 그림 파일 이외에, 너는 다른 형식의 이진 파일, 예를 들어Word 문서, PDF 문서 등을 저장할 수 있다.
실험 절차
mix phoenix.new bytea --no-brunch
창설 프로젝트, 다운로드 의존 알림Y
mix compile
컴파일 항목vi config/dev.exs
데이터베이스를 설정합니다. 기본적으로 생성된 사용자 이름과 비밀번호는 postgres
입니다. 따라서 테스트할 때 데이터베이스 사용자 이름과 비밀번호를 postgres
로 설정하는 것이 매우 편리합니다.mix ecto.setup
데이터베이스와 테이블을 만듭니다. 이 명령은 실제로mix.exs
에 정의된 별명으로 여러 개의 하위 명령을 포함합니다iex -S mix phoenix.server
부팅 테스트https://github.com/developerw...
테스트할 때 파일을 아무거나 찾아서 이 위치에 놓을 수 있다
"/tmp/FB7D22A5-924E-4DA5-AC93-5D815FA1AEA8.png"
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
postgresql의 jsonb 데이터 조회 및 수정 방법jsonb PostgreSQL 문서에서 정의한 데이터 형식 json과 jsonb는 거의 같다.관건적인 차이점은 json 데이터는 JSON 입력 텍스트의 정확한 복사본으로 저장되고 jsonb는 분해된 2진 형식으로 데...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.