成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

Elixir Ecto: 在Postgresql中插入二進(jìn)制數(shù)據(jù)

CarterLi / 2549人閱讀

摘要:本文以用一個(gè)在數(shù)據(jù)庫(kù)中保存圖片信息為例展示如何向中插入二進(jìn)制數(shù)據(jù)首先我們要知道中唯一一種二進(jìn)制數(shù)據(jù)的類(lèi)型為表示字節(jié)數(shù)組或字節(jié)序列對(duì)應(yīng)于和中的下面是一個(gè)示例遷移腳本這里也可以為實(shí)際上在執(zhí)行數(shù)據(jù)庫(kù)中字段的類(lèi)型就是當(dāng)然除了圖片文件以外你還

本文以用一個(gè)在數(shù)據(jù)庫(kù)中保存圖片信息為例, 展示如何向 Postgresql 中插入二進(jìn)制數(shù)據(jù).

首先我們要知道 Postgresql 中唯一一種二進(jìn)制數(shù)據(jù)的類(lèi)型為 bytea, 表示字節(jié)數(shù)組字節(jié)序列. 對(duì)應(yīng)于Oracle和MySQL中的 blob.

下面是一個(gè)示例

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, 實(shí)際上在執(zhí)行 mix ecto.migrate 數(shù)據(jù)庫(kù)中:photo字段的類(lèi)型就是:bytea
      add :photo, :bytea

      timestamps()
    end

  end
end

當(dāng)然, 除了圖片文件以外, 你還可以存儲(chǔ)其他格式的二進(jìn)制文件, 比如Word文檔, PDF文檔等等.

實(shí)驗(yàn)步驟

mix phoenix.new bytea --no-brunch
創(chuàng)建項(xiàng)目, 提示下載依賴(lài), 輸入 Y

mix compile
編譯項(xiàng)目

vi config/dev.exs
配置數(shù)據(jù)庫(kù), 默認(rèn)生成的用戶名和密碼都是postgres,所以在測(cè)試的時(shí)候把你的數(shù)據(jù)庫(kù)用戶名和密碼設(shè)置成postgres是非常方便的.

mix ecto.setup
創(chuàng)建數(shù)據(jù)庫(kù)和表, 這個(gè)命令實(shí)際上是在mix.exs中定義的別名,包含多個(gè)子命令

iex -S mix phoenix.server
啟動(dòng)測(cè)試

示例地址

https://github.com/developerw...

測(cè)試的時(shí)候可以隨便找一個(gè)文件放到這個(gè)位置 "/tmp/FB7D22A5-924E-4DA5-AC93-5D815FA1AEA8.png"

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/38959.html

相關(guān)文章

  • Elixir Ecto: PostgreSQL大自增長(zhǎng)主鍵的設(shè)置

    摘要:要解決的問(wèn)題數(shù)據(jù)庫(kù)中存儲(chǔ)的行數(shù)超過(guò)了類(lèi)型所能容納的數(shù)量因此需要采用類(lèi)型的整數(shù)作為主鍵的取值范圍為到的取值范圍為到完整的字段的數(shù)據(jù)類(lèi)型可以參考這里遷移腳本要點(diǎn)的參數(shù)要設(shè)置為通過(guò)宏指定主鍵列類(lèi)型為模型的聲明要點(diǎn)主鍵要聲明為類(lèi)型完 要解決的問(wèn)題 數(shù)據(jù)庫(kù)中存儲(chǔ)的行數(shù)超過(guò)了 serial 類(lèi)型所能容納的數(shù)量, 因此需要采用 bigserial 類(lèi)型的整數(shù)作為主鍵serial 的取值范圍為: 1...

    yvonne 評(píng)論0 收藏0
  • Elixir Ecto: 使用Geo庫(kù)操作空間數(shù)據(jù)(地理坐標(biāo))

    摘要:簡(jiǎn)介數(shù)據(jù)格式空間數(shù)據(jù)的文本標(biāo)識(shí)空間數(shù)據(jù)的二進(jìn)制標(biāo)識(shí)基于對(duì)象表示法的地理空間信息數(shù)據(jù)交換格式的庫(kù)提供了上述三種格式的相互轉(zhuǎn)換函數(shù)配置添加依賴(lài)配置擴(kuò)展創(chuàng)建刪除擴(kuò)展的移植腳本腳本內(nèi)容執(zhí)行移植插入數(shù)據(jù)軌跡點(diǎn)粵獲取經(jīng)緯度粵查詢(xún)聯(lián)系如何查詢(xún)字段例 簡(jiǎn)介 數(shù)據(jù)格式 Abbr Fullname Description WKT Well Known Text 空間數(shù)據(jù)的文本標(biāo)識(shí) WKB ...

    Blackjun 評(píng)論0 收藏0
  • Elixir Ecto: 模型的嵌入(Embed)

    摘要:及其以上版本可以存儲(chǔ)類(lèi)似這樣的非結(jié)構(gòu)化數(shù)據(jù)作為一個(gè)的數(shù)據(jù)封裝器提供了這些非結(jié)構(gòu)話的數(shù)據(jù)到原生數(shù)據(jù)類(lèi)型的序列化和反序列化嵌入的記錄具有所有常規(guī)模型所具有的東西比如結(jié)構(gòu)化的字段生命周期回調(diào)變更集下面研究如何把結(jié)構(gòu)嵌入到模型當(dāng)中使用嵌入單個(gè)結(jié)構(gòu)可 Postgres 9.4 及其以上版本可以存儲(chǔ)類(lèi)似 arrays, json, jsonb 這樣的非結(jié)構(gòu)化數(shù)據(jù). Ecto 作為一個(gè) Elixir...

    ningwang 評(píng)論0 收藏0
  • Elixir Ecto: Postgres使用UUID類(lèi)型的主鍵

    摘要:使用作為主鍵的目的降低類(lèi)型這種自增線性特征作為隨機(jī)生成的字符串讓更離散增強(qiáng)系統(tǒng)的反爬蟲(chóng)能力至少避免通過(guò)的線性增加來(lái)爬取內(nèi)容這種最簡(jiǎn)單的爬取方式使用主鍵的是那種方式各有優(yōu)缺點(diǎn)可按實(shí)際需求自行權(quán)衡在應(yīng)用程序中生成并插入到數(shù)據(jù)庫(kù)通過(guò)使用擴(kuò)展自動(dòng)生 使用UUID作為主鍵的目的 降低Serial類(lèi)型這種自增ID線性特征, UUID作為隨機(jī)生成的字符串, 讓ID更離散, 增強(qiáng)系統(tǒng)的反爬蟲(chóng)能力(至...

    OnlyLing 評(píng)論0 收藏0
  • 前端速查表大全,分享一些技術(shù)和工具的簡(jiǎn)明教程

    摘要:這個(gè)速查表主要是分享互聯(lián)網(wǎng)上一些比較常用的工具和技術(shù)常用內(nèi)容,如編輯器的快捷鍵的命令行的選擇器的屬性等,這個(gè)列表簡(jiǎn)單收集了常用的工具,可以收藏用于平時(shí)的備忘錄,需要用到的時(shí)候可以及時(shí)查閱。 這個(gè)速查表主要是分享互聯(lián)網(wǎng)上一些比較常用的工具和技術(shù)常用內(nèi)容,如編輯器的快捷鍵、git的命令行、jQuery的API選擇器、CSS的flexbox屬性等,這個(gè)列表簡(jiǎn)單收集了常用的工具,可以收藏用于平...

    xiaochao 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<