Export dat do souboru dBASE. Program pro export dat ze souborů dBase do aplikace Microsoft Excel

DBF je oblíbený formát pro ukládání a výměnu dat mezi různými programy a především mezi aplikacemi, které obsluhují databáze a tabulky. I když se stal zastaralým, je stále žádaný v různých oborech. Například účetní programy s ním nadále aktivně pracují, přičemž kontrolují a vládních orgánů přijímat značnou část zpráv v tomto formátu.

Bohužel však Excel, počínaje verzí Excelu 2007, přestal tento formát plně podporovat. Nyní v tomto programu můžete pouze prohlížet obsah souboru DBF a vestavěné aplikační nástroje již nebudou moci ukládat data se zadanou příponou. Naštěstí existují i ​​jiné možnosti převodu dat z Excel programy v požadovaném formátu. Pojďme se podívat, jak to lze provést.

V aplikaci Excel 2003 a vyšší rané verze Pomocí tohoto programu bylo možné standardním způsobem ukládat data ve formátu DBF (dBase). K tomu jste museli kliknout na položku "Soubor" ve vodorovné nabídce aplikace a poté v seznamu, který se otevře, vyberte pozici "Uložit jako…". V uloženém okně, které se otevřelo, jste museli ze seznamu vybrat název požadovaného formátu a kliknout na tlačítko "Uložit".

Ale bohužel, počínaje verzí Excel 2007, vývojáři Microsoftu považovali dBase za zastaralé a moderní formáty Excelu jsou příliš složité na to, aby utrácely čas a peníze na zajištění plné kompatibility. Excel tedy zůstal schopen číst soubory DBF, ale podpora ukládání dat v tomto formátu pomocí vestavěných softwarových nástrojů byla ukončena. Existuje však několik způsobů, jak převést data uložená v Excelu do DBF pomocí doplňků a dalšího softwaru.

Metoda 1: WhiteTown Converters Pack

Existuje řada programů, které umožňují převádět data z Excelu do DBF. Jeden z nejvíce jednoduchými způsoby Chcete-li převést data z Excelu do DBF, musíte použít balíček nástrojů pro převod objektů s jiným rozšířením WhiteTown Converters Pack.

Přestože je postup instalace tohoto programu jednoduchý a intuitivní, přesto se mu budeme věnovat podrobně a poukážeme na některé nuance.

  1. Po stažení a spuštění instalačního programu se okamžitě otevře okno Instalační průvodci, který vás vyzve k výběru jazyka pro další postup instalace. Ve výchozím nastavení by zde měl být zobrazen jazyk, který je nainstalován ve vaší instanci systému Windows, ale můžete jej změnit, pokud chcete. Neuděláme to a prostě stiskneme tlačítko OK.
  2. Dále se otevře okno, ve kterém je umístění na systémový disk kde bude nástroj nainstalován. Ve výchozím nastavení je to složka "Programové soubory" na disku "C". Zde je také lepší nic neměnit a stisknout klávesu "Dále".
  3. Poté se otevře okno, ve kterém si můžete přesně vybrat, které směry transformace chcete mít. Ve výchozím nastavení jsou vybrány všechny dostupné součásti převodu. Někteří uživatelé však nemusí chtít instalovat všechny, protože každý nástroj zabírá místo na pevném disku. V každém případě je pro nás důležité, že je u položky zatržítko Převodník XLS (Excel) do DBF. Uživatel si může zvolit instalaci zbývajících součástí obslužného balíčku podle svého uvážení. Po dokončení nastavení nezapomeňte kliknout na tlačítko "Dále".
  4. Poté se otevře okno, ve kterém je do složky přidán zástupce "Start". Ve výchozím nastavení je štítek pojmenován "Whitetown", ale pokud chcete, můžete změnit jeho název. Klikněte na klíč "Dále".
  5. Poté spustí okno s dotazem, zda vytvořit zástupce na ploše. Pokud chcete, aby byl přidán, nechte zaškrtnutí vedle odpovídajícího parametru, pokud si to nepřejete, zrušte jeho zaškrtnutí. Poté jako vždy stiskněte klávesu "Dále".
  6. Poté se otevře další okno. Obsahuje základní možnosti instalace. Pokud uživateli něco nevyhovuje a chce upravit parametry, měl by stisknout tlačítko "Zadní". Pokud je vše v pořádku, klikněte na tlačítko "Nainstalujte".
  7. Spustí se instalační procedura, jejíž průběh bude zobrazován dynamickým indikátorem.
  8. Poté se otevře Oznámení v angličtině vyjadřující vděčnost za instalaci tento balíček. Klikněte na klíč "Dále".
  9. V posledním okně Instalační průvodci hlásí, že WhiteTown Converters Pack byl úspěšně nainstalován. Musíme jen stisknout tlačítko "Kompletní".
  10. Poté se složka s názvem "Whitetown". Obsahuje zástupce nástrojů pro konkrétní oblasti převodu. Otevřete tuto složku. Objevuje se před námi velké číslo nástroje zahrnuté v balíčku WhiteTown v různých oblastech konverze. Navíc má každý směr samostatnou utilitu pro 32bitovou a 64bitovou verzi operační systém Okna. Otevřete aplikaci s názvem Převodník XLS na DBF, odpovídající bitovosti vašeho OS.
  11. Spustí se program XLS to DBF Converter. Jak vidíte, rozhraní je v angličtině, ale přesto je intuitivní.

    Karta se okamžitě otevře "Vstup" ("Vstup"). Je určen k označení objektu, který má být převeden. Chcete-li to provést, klepněte na tlačítko Přidat ("Přidat").

  12. Poté se otevře standardní okno pro přidání objektu. V něm musíte přejít do adresáře, kde se nachází sešit Excel, který potřebujeme, s příponou xls nebo xlsx. Po nalezení objektu vyberte jeho název a klikněte na tlačítko "Otevřeno".
  13. Jak vidíte, poté se v záložce zobrazila cesta k objektu "Vstup". Klikněte na klíč další ("Dále").
  14. Poté se automaticky přesuneme na druhou záložku "Výstup" ("Závěr"). Zde je potřeba určit, ve kterém adresáři se bude hotový objekt s příponou DBF zobrazovat. Chcete-li vybrat složku pro uložení hotového souboru DBF, klikněte na tlačítko "Procházet..." ("Pohled"). Otevře se malý seznam dvou položek "Zvolte soubor" ("Vyberte soubor") a "Vybrat složku" ("Vybrat složku"). Ve skutečnosti tyto body znamenají pouze volbu jiný druh navigačních oknech k určení složky pro uložení. Vybíráme si.
  15. V prvním případě to bude normální okno "Uložit jako…". Zobrazí jak složky, tak již existující objekty dBase. Přejděte do adresáře, kam chceme uložit. Dále do terénu "Název souboru" uvedeme jméno, pod kterým chceme, aby se objekt po konverzi objevil. Poté klikněte na tlačítko "Uložit".

    Pokud zvolíte možnost "Vybrat složku" otevře se zjednodušené okno pro výběr adresáře. Zobrazí pouze složky. Vyberte složku, kterou chcete uložit, a klikněte na tlačítko OK.

  16. Jak vidíte, po kterékoli z těchto akcí se v záložce zobrazí cesta ke složce pro uložení objektu "Výstup". Chcete-li přejít na další kartu, klikněte na tlačítko další ("Dále").
  17. PROTI poslední záložka Možnosti ("Parametry") nastavení je spousta, ale nás zajímá nejvíc Typ poznámkových polí ("Typ pole poznámky"). Klikněte na pole, ve kterém je výchozí nastavení Auto ("Auto"). Otevře se seznam typů dBase pro uložení objektu. Tento parametr je velmi důležitý, protože ne všechny programy, které pracují s dBase, dokážou zpracovat všechny typy objektů s tímto rozšířením. Proto je třeba předem vědět, jaký typ zvolit. Na výběr je ze šesti různých typů:
    • dBASE III;
    • FoxPro;
    • dBASE IV;
    • Visual FoxPro;
    • >SMT;
    • dBASE Úroveň 7.

    Vybíráme typ, který je potřeba pro použití v konkrétním programu.

  18. Po provedení výběru můžete přistoupit k postupu přímého převodu. Chcete-li to provést, klepněte na tlačítko Start ("Start").
  19. Spustí se proces převodu. Pokud je v sešitu aplikace Excel několik datových listů, bude pro každý z nich vytvořen samostatný soubor DBF. Dokončení procesu převodu bude indikováno symbolem zelený indikátor pokrok. Poté, co se dostane na konec pole, klikněte na tlačítko Dokončit ("Cíl").

Hotový dokument bude umístěn v adresáři, který byl zadán na kartě "Výstup".

Jedinou významnou nevýhodou metody využívající WhiteTown Converters Pack je, že bude možné provést zdarma pouze 30 převodních procedur a poté si budete muset zakoupit licenci.

Metoda 2: Přidejte XlsToDBF

Sešit aplikace Excel můžete převést na dBase přímo prostřednictvím rozhraní aplikace instalací doplňků třetích stran. Jedním z nejlepších a nejpohodlnějších z nich je doplněk XlsToDBF. Zvažte algoritmus pro jeho aplikaci.

  1. Po stažení archivu XlsToDBF.7z s doplňkem z něj rozbalíme objekt s názvem XlsToDBF.xla. Vzhledem k tomu, že archiv má příponu 7z, lze rozbalení provést také standardní program 7-Zip pro toto rozšíření nebo pomocí jiného archivátoru, který podporuje práci s ním.
  2. Poté spusťte program Excel a přejděte na kartu "Soubor". Přesun do sekce "Parametry" prostřednictvím nabídky na levé straně okna.
  3. V okně nastavení, které se otevře, klikněte na položku "Doplňky". Přesuneme se na pravou stranu okna. Úplně dole je pole "Řízení". Přepínač v něm přeuspořádáme do polohy "Doplňky aplikace Excel" a klikněte na tlačítko "Jít...".
  4. Otevře se malé okno pro správu doplňků. Klikněte na tlačítko "Přehled…".
  5. Otevře se okno pro otevření objektu. Musíme jít do adresáře, kde se nachází rozbalený archiv XlsToDBF. Přejdeme do složky pod stejným názvem a vybereme objekt s názvem "XlsToDBF.xla". Poté klikněte na tlačítko OK.
  6. Poté se vrátíme do okna správy doplňků. Jak vidíte, jméno se objevilo v seznamu "XLS -> DBF". Toto je náš doplněk. Vedle toho by měla být značka zaškrtnutí. Pokud není zaškrtnuto, vložte jej a poté klikněte na tlačítko OK.
  7. Doplněk je tedy nainstalován. Nyní otevřeme dokument Excel, jehož data je třeba převést na dBase, nebo je jednoduše napíšeme na list, pokud dokument ještě nebyl vytvořen.
  8. Nyní budeme muset provést nějakou manipulaci s daty, abychom je připravili na konverzi. Nejprve přidáme dva řádky nad záhlaví tabulky. Musí být úplně první na listu a mít svá jména ve svislém pruhu souřadnic. "jeden" a "2".

    Do levé horní buňky zadáme název, který chceme přiřadit vytvořenému DBF souboru. Skládá se ze dvou částí: samotného názvu a rozšíření. Povolena je pouze latinka. Příkladem takového jména je UCHASTOK.DBF.

  9. V první buňce napravo od názvu musíte zadat kódování. Pomocí tohoto doplňku existují dvě možnosti kódování: CP866 a CP1251. Pokud buňka B2 prázdné nebo nastavené na jinou hodnotu než "CP866", výchozí kódování bude CP1251. Vložíme kódování, které považujeme za nutné, nebo necháme pole prázdné.
  10. Poté přejdeme na další řádek. Faktem je, že ve struktuře dBase má každý sloupec, nazývaný pole, svůj vlastní datový typ. Existují taková označení:
    • N(Numeric) - numerický;
    • L(Logical) – logický;
    • D(Datum) – datum;
    • C(Postava) - řetězec.

    Také v řetězci ( cnnn) a číselný typ ( Nnn) by mělo být uvedeno za jménem ve formě písmene maximální částka znaky v poli. Pokud jsou v číselném typu použita desetinná místa, musí být jejich počet také uveden za tečkou ( Nnn.n).

    Existují další datové typy ve formátu dBase (Memo, General atd.), ale tento doplněk s nimi neumí pracovat. Neuměl s nimi ale pracovat ani Excel 2003, kdy ještě podporoval převod do DBF.

    V našem konkrétním případě bude prvním polem řetězec široký 100 znaků ( C100) a zbývající pole budou číselná o šířce 10 znaků ( N10).

  11. Další řádek obsahuje názvy polí. Faktem ale je, že musí být zapsány také latinkou, a ne azbukou, jako máme my. V názvech polí také nejsou povoleny mezery. Přejmenujte je podle těchto pravidel.
  12. Poté lze přípravu dat považovat za dokončenou. Vybíráme na listu kurzorem se stisknutým levým tlačítkem myši celý rozsah tabulky. Poté přejděte na kartu "Vývojář". Ve výchozím nastavení je zakázáno, takže před dalšími manipulacemi je třeba jej aktivovat a povolit makra. Dále na pásu karet v bloku nastavení "Kód" klikněte na ikonu "makra".

    Můžete si to trochu usnadnit zadáním kombinace horkých kláves Alt+F8.

  13. Otevře se okno makra. V terénu "Název makra" zadejte název našeho doplňku XlsToDBF bez uvozovek. Registr není důležitý. Dále klikněte na tlačítko "Běh".
  14. Makro provádí zpracování na pozadí. Poté se ve stejné složce, kde se nachází původní soubor Excel, vygeneruje objekt s příponou DBF s názvem, který byl zadán v buňce A1.

Jak vidíte, tato metoda je mnohem složitější než předchozí. Navíc je velmi omezený, pokud jde o počet použitých typů polí a typů objektů vytvořených s rozšířením DBF. Další nevýhodou je, že adresář pro vytvoření objektu dBase lze nastavit pouze před postupem převodu přímým přesunem do cílové složky původního souboru aplikace Excel. Mezi výhody této metody lze poznamenat, že na rozdíl od předchozí verze je zcela zdarma a téměř všechny manipulace se provádějí přímo prostřednictvím rozhraní Excel.

Metoda 3: Program Microsoft Access

Nové verze Excelu sice nemají vestavěný způsob ukládání dat ve formátu DBF, ale přesto možnost pomocí aplikace společnosti Microsoft Přístup je nejblíže označení standardní. Faktem je, že tento program je vydán stejným výrobcem jako Excel a je také součástí balíček Microsoft kancelář. Kromě toho je to nejbezpečnější možnost, protože nebudete muset kontaktovat software výrobců třetích stran. Microsoft Access speciálně navržený pro práci s databázemi.

  1. Po zadání všech potřebných údajů na listu Excel, abyste jej mohli převést do formátu DBF, musíte jej nejprve uložit v některém z formátů Excel. Chcete-li to provést, klikněte na ikonu ve formě diskety vlevo horním rohu okna programu.
  2. Otevře se okno uložení. Přejdeme do adresáře, kam chceme soubor uložit. Je z této složky, kterou pak bude nutné otevřít v aplikaci Microsoft Access. Formát knihy lze ve výchozím nastavení ponechat xlsx, nebo jej můžete změnit na xls. PROTI tento případ to není kritické, protože soubor stejně ukládáme, jen abychom jej převedli na DBF. Po dokončení všech nastavení klikněte na tlačítko "Uložit" a zavřete okno Excelu.
  3. Spouštíme program Microsoft Access. Přejděte na kartu "Soubor" pokud je otevřen na jiné kartě. Klikněte na položku nabídky "Otevřeno" umístěné na levé straně okna.
  4. Otevře se okno pro otevření souboru. Přejdeme do adresáře, kam jsme uložili soubor v jednom z formátů Excel. Chcete-li jej zobrazit v okně, přesuňte přepínač formátu souboru do polohy "Sešit Excel (*.xlsx)" nebo "Microsoft Excel (*.xls)", podle toho, do kterého byla kniha uložena. Po zobrazení názvu souboru, který potřebujeme, jej vyberte a klikněte na tlačítko "Otevřeno".
  5. Otevře se okno "Odkaz na tabulku". Umožňuje nejsprávněji přesouvat data ze souboru aplikace Excel do aplikace Microsoft Access. Musíme vybrat list Excel, ze kterého budeme importovat data. Faktem je, že i když soubor Excel obsahoval informace na několika listech, můžete je importovat do Accessu pouze samostatně a podle toho je převést na jednotlivé soubory dbf.

    Je také možné importovat informace o jednotlivých řadách na listy. Ale v našem případě to není nutné. Nastavte přepínač do polohy "Povlečení na postel" a poté vyberte list, ze kterého budeme přebírat data. Správnost zobrazení informací lze sledovat ve spodní části okna. Pokud vše vyhovuje, klikněte na tlačítko "Dále".

  6. V dalším okně, pokud vaše tabulka obsahuje záhlaví, musíte zaškrtnout políčko vedle "První řádek obsahuje záhlaví sloupců". Poté klikněte na tlačítko "Dále".
  7. V novém okně odkazu na tabulku můžete volitelně změnit název propojené položky. Poté klikněte na tlačítko "připraven".
  8. Poté se otevře dialogové okno, ve kterém se zobrazí zpráva, že propojení tabulky se souborem Excel je dokončeno. Klikněte na tlačítko OK.
  9. Na levé straně rozhraní programu se objeví název tabulky, kterou jsme k ní přiřadili v posledním okně. Dvakrát na něj klikněte levým tlačítkem myši.
  10. Poté se tabulka zobrazí v okně. Přesun na kartu "Externí data".
  11. Na pásu karet v panelu nástrojů "Vývozní" klikněte na titulek "Dodatečně". V seznamu, který se otevře, vyberte položku "soubor dbase".
  12. Otevře se okno Export do DBF. V terénu "Název souboru" můžete určit umístění úložiště souborů a jeho název, pokud vám výchozí z nějakého důvodu nevyhovují.

    V terénu "Formát souboru" vyberte jeden ze tří typů formátu DBF:

    • dBASE III(výchozí);
    • dBASE IV;
    • dBASE 5.

    Je třeba poznamenat, že čím modernější formát (čím vyšší sériové číslo), tím více příležitostí pro zpracování dat v něm. To znamená, že existuje vyšší pravděpodobnost, že všechna data tabulky budou uložena do souboru. Zároveň je ale méně pravděpodobné, že program, do kterého se v budoucnu chystáte importovat soubor DBF, bude kompatibilní s tímto konkrétním typem.

    Po nastavení všech nastavení klikněte na tlačítko OK.

  13. Pokud se poté zobrazí chybová zpráva, zkuste exportovat data pomocí jiného typu formátu DBF. Pokud vše proběhlo v pořádku, zobrazí se okno s informací, že export byl úspěšný. Klikněte na tlačítko "Zavřít".

Vytvořený soubor ve formátu dBase bude umístěn v adresáři zadaném v okně exportu. Dále s ním můžete provádět jakékoli manipulace, včetně importu do jiných programů.

Jak vidíte, navzdory skutečnosti, že moderní verze Excelu nemají možnost ukládat soubory ve formátu DBF pomocí vestavěných nástrojů, tento postup lze provést pomocí jiných programů a doplňků. Zároveň je třeba poznamenat, že nejfunkčnějším způsobem převodu je použití sady nástrojů WhiteTown Converters Pack. Ale bohužel číslo bezplatné konverze je to omezené. Doplněk XlsToDBF umožňuje převádět zcela zdarma, ale postup je mnohem složitější. Kromě toho je funkčnost této možnosti velmi omezená.

„Zlatá střední cesta“ je metoda využívající program Access. Stejně jako Excel je vývoj Microsoft, a proto aplikace třetí strany už mu nemůžeš zavolat. Kromě toho vám tato možnost umožňuje převádět excelový soubor do několika typů formátu dBase. I když podle tohoto ukazatele je Access stále horší než program WhiteTown.

Do MSSQL je potřeba tahat data z nějakých úplných sraček, které kromě ODBC nelze nijak propojit. A vytvářet spojení je také líné. Bylo by hezké vytvořit to za běhu.

Krátký popis řešení:

Začneme importovat data.
Vyberte zdrojový ovladač". NET Framework Poskytovatel dat pro ODBC
Zadejte řetězec Connect.
Chcete-li zadat data k přenosu, vyberte možnost Napsat dotaz
Píšeme dotaz jako: select * from c:\Temp\filename.dbf
Nezapomeňte, že názvy souborů musí odpovídat kódování MS-DOS 8.3

Kompletní popis řešení

Navzdory skutečnosti, že dbf byl dlouho považován za starší formát, toto téma stále zůstává naléhavým úkolem, soudě podle počtu dotazů na internetu. Zejména jsem na to narazil při pokusu přetáhnout mapu do tabulky. Mapa ArcGIS obsahovala metadata ve formátu dbf. Mělo smysl je číst současně SQL Server abyste se vyhnuli ručnímu označování polygonů, čar a dalších kartografických objektů. V dobách Visual FoxPro 6 a SQL Server 7.0 to nebyl problém, ale od té doby se hodně změnilo. S vydáním SQL Server 2005 MSDN oznámilo, že Průvodce importem a exportem serveru SQL nepodporuje import a export souborů dBASE a dalších souborů DBF. Doporučeným řešením je použití SQL Server Integration Services nebo přechodný import v Accessu nebo Excelu. Stejná situace formálně přetrvává dodnes, včetně SQL Serveru 2012. To není vždy vhodné, protože kromě SQL Serveru vyžaduje dodatečná instalace Nástroje pro vývoj balíků MS Office a ETL nejsou součástí bezplatné edice SQL Server Express. V této poznámce se pokusím importovat dbf do SQL Server pomocí ničeho jiného než SQL Server.

Odtud je převzat soubor regionů2010_wgs.dbf. Otevřete SQL Server Management Studio, v Průzkumníku objektů vyberte databázi, do jejíž tabulky budeme importovat dbf, az kontextová nabídkařekněte Importovat data:

Jako zdroj dat zadáváme poskytovatele dat .Net Framework pro ODBC, protože ODBC je nyní opět naše, jako ConnectionString - následující připojovací řetězec:

Driver=(Microsoft dBase Driver (*.dbf));SourceType=DBF;SourceDB=NA;Exclusive=No; NULL=Ne;Smazáno=Ne;BackgroundFetch=Ne


Obr.2

Klepněte na tlačítko Další. Pokud nyní stiskneme Zpět, uvidíme, že vlastnosti připojení se rozšířily z řádku na sloupec, takže můžeme vidět jejich seznam a vidět, čemu se každá z nich rovná:

Příklady připojovacího řetězce pro ovladač dBase ODBC jsou k dispozici například v databázi Microsoft Knowledge Base nebo na adrese connectionstrings.com. Obecně lze účel určitých vlastností snadno uhodnout z jejich názvů, snad kromě vlastnosti Deleted, která má přesně opačný význam. Jak víte, operace odstranění řádku v dBase/FoxPro nevede k jeho okamžitému fyzické odstranění ze souboru. Řádek je pouze označen jako smazaný. Fyzické čištěnířádky, které mají příznak odstranění a reorganizaci souboru provádí příkaz PACK. Hodnota NE říká ovladači, aby zahrnul odstraněné řádky do vrácené sady výsledků. Chcete-li je naopak nezobrazovat, musíte zadat ANO. Klepněte na tlačítko Další.

Na další obrazovce je vše jednoduché. Je nastaveno připojení k SQL Serveru včetně databáze, ve které se vytvoří tabulka s výsledky importu z dbf:

Pokračuj. Navrhuje se vybrat tabulku dbf ze seznamu tabulek nebo napsat dotaz ručně. Dává to smysl například pro databázi FoxPro, což je jako každá normální databáze kontejner, který obsahuje více tabulek, v tomto případě ve formě samostatných souborů dbf. Toto nefunguje pro jednotlivý soubor dbf - viz například OdbcConnection.GetSchema("tabulky"), vše špatně pro soubor .dbf a podpora společnosti Microsoft doporučuje v této situaci použít poskytovatele OLE DB pro Visual FoxPro. Za prvé, incident se odehrál dlouho před zásadní změnou v obecné linii strany. OLE DB bylo tehdy naše všechno a ODBC naopak patřilo ke starým legacy rozhraním. Za druhé nechápu, proč by se měl procházet seznam dbf, když je jen jeden.

V případě nesourodých dbfs umístěných ve stejném adresáři je třeba nastavit vlastnost DefaultDir v připojovacím řetězci ODBC (obr. 3), např.

Driver=(Microsoft dBase Driver (*.dbf));sourcetype=DBF;DefaultDir=c:\Temp;exclusive=Ne;null=Ne;deleted=Ne;backgroundfetch=Ne

Poté můžete zkontrolovat Kopírovat data z jedné nebo více tabulek nebo zobrazení.

A zobrazí se seznam dbfs v tomto adresáři, ze kterého budete vyzváni k výběru:

Ale nenastavil jsem DefaultDir na obrázku 3, takže jsem se rozhodl napsat dotaz:

A píšu:

A jako odpověď dostávám Chyba Databázový stroj Microsoft Jet nemohl najít objekt "regions2010_wgs.dbf":

K této chybě dochází, protože hloupý ovladač stále přijímá názvy souborů MS-DOS 8.3. Pokud přejmenujeme soubor regionů2010_wgs.dbf řekněme na aaa.dbf a dotaz na obr. 8 nahradíme select * z c:\Temp\aaa.dbf, chyba zmizí. Budete vyzváni k výběru existující tabulky nebo zadání názvu tabulky, která bude vytvořena na SQL Serveru v Database1 (viz obr. 4) pod výsledky importu z dbf. Navrhovaný název nechávám tak, jak je:

Kliknutím na tlačítko Náhled zde můžete zobrazit náhled obsahu dbf, který má být přenesen na SQL Server:

Vše v pořádku, jen místo ruského textu depresivní abrakadabra. Důvod jeho vzhledu v populární podobě vysvětluje respektovaný autor Lalex zde. Ruské znaky selžou, protože hloupý ovladač očekává soubor dbf zakódovaný v DOSu (CP866, aka OEM). Zdá se, že formát dbf považuje za velmi staré, čistě DOSové dědictví. ArcView standardně považuje DBF za formát Windows (ANSI 1251). Takže tyto dva programy stojí jako dva býci a opírají si čelo.

Důvod je tedy jasný, zbývá opravit. Tanec s tamburínou pro registraci collate=Machine nebo Russian / CodePage=ANSI / Collating Sequence=1251 v připojovacím řetězci nevedl k úspěchu. Změněn 29. bajt v aaa.dbf na 0xC9 - nulové emoce. Atribut kódové stránky v hlavičce dbf ovladač skutečně ignoruje. Nastavení ovladače však lze změnit v registru. Je uložen na stránce DataCodePage pod cestou HKLM\SOFTWARE\Microsoft\Jet\4.0\Engines\xBase nebo HKLM\SOFTWARE\Microsoft\Office\14.0\Access Connectivity Engine\Engines\Xbase nebo HKLM\SOFTWARE\Wow6432Node\ Microsoft\Jet \4.0\Engines\xBase nebo HKLM\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Access Connectivity Engine\Engines\Xbase v závislosti na tom, zda byl v počítači nainstalován Office, a pokud ano, jak. Ve výchozím nastavení je vlastnost skutečně nastavena na OEM, což nutí ovladač číst všechny dbfs na základě tohoto kódování. Pokud jej změníte na ANSI

Cyrilice v ANSI dbf "e se samozřejmě bude číst lidsky.

  • tutorial

V tomto článku vám řeknu, jak načíst mnoho obrovských souborů dbf sestávajících z milionů záznamů do vaší databáze na serveru ms sql v rozumném čase.

Úkol je to na první pohled triviální. Můžete použít průvodce v SQL Management Studio nebo funkci OPENROWSET pomocí dotazu.

První možnost však po několika pokusech zmizela kvůli různým závadám a nutnosti načíst mnoho souborů do jedné tabulky (asi 100 souborů). Navíc při dlouhém nákladu vzlétla chyba.

Druhá možnost také nevyhovovala kvůli rozdílné bitové hloubce ovladačů a bitové hloubce serveru.

Vzhledem k tomu, že soubor je prostě obrovský, bylo rozhodnuto jej přečíst prostřednictvím streamu a zapsat do databáze. Dále po přečtení řádku v souboru musí být tento řádek zapsán do tabulky. První, co mě napadlo, bylo použít insert, ale psaní by v tomto případě zabralo příliš mnoho času.

A pak jsem si vzpomněl na další mechanismus zápisu přes SqlBulkCopy, který umožňuje vyplnit obrovské množství záznamů bez vkládání dotazů.
Ve skutečnosti se jedná o použití třídy SqlBulkCopy, pro zápis, přes kterou potřebujete implementovat pouze rozhraní IDataReader.

Začněme tedy implementací veřejné třídy rozhraní BDFBulkReader: IDataReader

Začněme funkcí, která vrací hodnotu aktuálního záznamu:
veřejný objekt GetValue(int i) ( return R]; )
Upozorňuji na to, že pole v souboru a pole v tabulce mohou být v jiném pořadí. A na indexu by bylo žádoucí získat hodnotu pro odpovídající pole tabulky. Proto jsem dodatečně použil slovník FieldIndex, kde je mapování názvů polí na číslo v sql tabulce. Podle čísla se přebírá název pole, podle názvu se přebírá hodnota z přečteného řádku souboru dbf ze slovníku R. Výsledkem je, že pro n-tý index v databázi GetValue vrátí odpovídající hodnotu.
Slovník R = nový slovník (); Slovník FieldIndex = nový slovník ();

Předáme FieldIndex již vyplněný pro tabulku a R jej vyplní, když čtečka zavolá funkci Read, kterou později také implementujeme.

Takže konstruktér:

System.IO.FileStreamFS; byte buffer; int_Počet pole; intFieldsLength; System.Globalization.DateTimeFormatInfo dfi = new System.Globalization.CultureInfo("en-US", false).DateTimeFormat; System.Globalization.NumberFormatInfo nfi = new System.Globalization.CultureInfo("en-US", false).NumberFormat; stringFieldName; stringFieldType; byteFieldSize; byteFieldDigs; int Počet řádků; int ReadedRow = 0; Slovník R = nový slovník (); Slovník FieldIndex = nový slovník (); public BDFBulkReader(řetězec FileName, Dictionary FieldIndex) ( FS = new System.IO.FileStream(FileName, System.IO.FileMode.Open); buffer = nový bajt; FS.Position = 4; FS.Read(buffer, 0, buffer.Length); RowsCount = buffer + (buffer * 0x100) + (buffer * 0x10000) + (buffer * 0x1000000); buffer = nový bajt; FS.Position = 8; FS.Read(buffer, 0, buffer.Length); _FieldCount = (((buffer + (buffer * 0x100)) - 1) / 32) - 1; FieldName = nový řetězec[_FieldCount]; FieldType = nový řetězec[_FieldCount]; FieldSize = nový bajt[_FieldCount]; FieldDigs = nový bajt[_FieldCount]; buffer = nový byte;FS.Position = 32;FS.Read(buffer, 0, buffer.Length);PoleLength = 0;for(int i = 0;i< _FieldCount; i++) { FieldName[i] = System.Text.Encoding.Default.GetString(buffer, i * 32, 10).TrimEnd(new char { (char)0x00 }); FieldType[i] = "" + (char)buffer; FieldSize[i] = buffer; FieldDigs[i] = buffer; FieldsLength = FieldsLength + FieldSize[i]; } FS.ReadByte(); this.FieldIndex = FieldIndex; }

Jeho úkolem je otevřít soubor, určit názvy polí, jejich počet a jejich typy. Druhý parametr konstruktoru, jak jsem psal výše, je slovník shod, takže např. prvním číslem pole zaručeně získáme požadované pole ze souboru.

Nyní přejdeme k implementaci bool Read(). Pokud byl řetězec úspěšně přečten, vrátí hodnotu true. A false, pokud nebyl řádek přečten a zároveň byl dosažen konec dat.

Public bool Read() ( if (ReadedRow >= RowsCount) vrátí hodnotu false; R.Clear(); buffer = nový bajt; FS.ReadByte(); FS.Read(buffer, 0, buffer.Length); int Index = 0 ; for (int i = 0; i< FieldCount; i++) { string l = System.Text.Encoding.GetEncoding(866).GetString(buffer, Index, FieldSize[i]).TrimEnd(new char { (char)0x00 }).TrimEnd(new char { (char)0x20 }); Index = Index + FieldSize[i]; object Tr; if (l.Trim() != "") { switch (FieldType[i]) { case "L": Tr = l == "T" ? true: false; break; case "D": Tr = DateTime.ParseExact(l, "yyyyMMdd", dfi); break; case "N": { if (FieldDigs[i] == 0) Tr = int.Parse(l, nfi); else Tr = decimal.Parse(l, nfi); break; } case "F": Tr = double.Parse(l, nfi); break; default: Tr = l; break; } } else { Tr = DBNull.Value; } R.Add(FieldName[i], Tr); } ReadedRow++; return true; }

Ještě jednou připomenu, že po jeho vyvolání se přečtený řádek zapíše do slovníku R, k následnému přečtení čtenářem.
Zbývá tedy implementovat metodu, která vrací počet polí:

Public int FieldCount ( get ( return _FieldCount; ) )

A útržky pro rozhraní:

Public void Dispose() ( FS.Close(); ) public int Hloubka ( get ( return -1; ) ) public bool IsClosed ( get ( return false; ) ) public Object this ( get ( return new object(); ) ) public Object this ( get ( return new object(); ) ) public int RecordsAffected ( get ( return -1; ) ) public void Close() ( ) public bool NextResult() ( return true; ) public bool IsDBNull(int i) ( return false; ) public string GetString(int i) ( return ""; ) public DataTable GetSchemaTable() ( return null; ) public int GetOrdinal(název řetězce) ( return -1; ) public string GetName(int i) ( return ""; ) public long GetInt64(int i) ( return -1; ) public int GetInt32(int i) ( return -1; ) public short GetInt16(int i) ( return -1; ) public Guid GetGuid(int i) ( return new Guid(); ) public float GetFloat(int i) ( return -1; ) public Type GetFieldType(int i) ( return typeof(string); ) public double GetDouble(int i) ( return -1; ) public decimal GetDecimal(int i) ( return -1; ) public DateTime GetDa teTime(int i) ( return new DateTime(); ) public string GetDataTypeName(int i) ( return ""; ) public IDataReader GetData(int i) ( return this; ) public long GetChars(int i, long fieldoffset, char buffer, int bufferoffset, int length) ( return -1; ) public char GetChar(int i) ( return " "; ) public long GetBytes(int i, long fieldOffset, byte buffer, int bufferoffset, int length) ( return -1; ) public byte GetByte(int i) ( return 0x00; ) public bool GetBoolean(int i) ( return false; ) public int GetValues(Object values) ( return -1; )

Kde v Dispose() jen zavřu soubor.

Jakmile je rozhraní implementováno, můžete napsat metodu pro načtení souboru:

Void SaveToTable(FileInfo dir, string TableName, string connestionString, Dictionary FieldIndex) ( pomocí (var loader = new SqlBulkCopy(connestionString, SqlBulkCopyOptions.Default)) ( loader.DestinationTableName = název_tabulky; loader.BulkCopyTimeout = 9999; loader.WriteToServer(new BDFBulkNader(me, Field)Index)

To je vše. Zbývá předat této funkci umístění souboru, název tabulky, připojovací řetězec a odpovídající slovník shod, například:

Slovník FieldIndex= nový slovník (); FieldIndex.Add(0, "POSTALCODE"); FieldIndex.Add(1, "IFNSFL"); FieldIndex.Add(2, "TERRIFNSFL"); FieldIndex.Add(3, "IFNSUL"); FieldIndex.Add(4, "TERRIFNSUL"); FieldIndex.Add(5, "OKATO"); FieldIndex.Add(6, "OKTMO"); FieldIndex.Add(7, "AKTUALIZACE"); FieldIndex.Add(8, "HOUSENUM"); FieldIndex.Add(9, "ESTSTATUS"); FieldIndex.Add(10, "BUILDNUM"); FieldIndex.Add(11, "STRUCNUM"); FieldIndex.Add(12, "STRSTATUS"); FieldIndex.Add(13, "ID DOMU"); FieldIndex.Add(14, "HOUSEGUID"); FieldIndex.Add(15, "AOGUID"); FieldIndex.Add(16, "DATUM STARTU"); FieldIndex.Add(17, "DATUM KONCE"); FieldIndex.Add(18, "STAV"); FieldIndex.Add(19, "NORMDOC"); FieldIndex.Add(20, "COUNTER");

Všichni, děkuji všem za pozornost, přeji příjemné stahování.

Jednoduchý program pro přenos dat ze souborů dbf do tabulek Microsoft Excel.


Pozadí tohoto nástroje je následující: v 1c dochází k nahrávání dat do starého a výkonného formátu dBase, například seznamy zboží s cenami atd. atd. Některé programy tedy snadno importují datové sady z tabulek Excelu, ale nevědí o dBase.


Upload 1s ukládá data v kódování WIN1251 (možná je to samozřejmě někde nakonfigurováno, nemám to zaškrtnuté), nicméně po otevření takového souboru v Excelu se informace zobrazí v „crackech“. Důvodem je, že Microsoft Excel ve výchozím nastavení otevírá tabulky dBase v kódování CP866 (DOS).


Ve skutečnosti mám na mysli to, že se pro jednoduchého uživatele ukazuje jako příliš obtížný test, jak, co, kde a čím překódovat, která tlačítka k tomu stisknout a jaké akce provést. Proto byl úkol stanoven co nejjednodušeji a okamžitě.


P.S.: Nikdy netvrdím, že jsem jedinečný a geniální, protože internet je plný podobný software, které mění kódování a dělají mnohem víc, ale většina z nich je placená a funkce navíc jen zhoršují muka obyčejných lidí.


Program pro export dat ze souborů dBase do aplikace Microsoft Excel.


Hlavní okno programu.


Po spuštění programu je potřeba kliknout na tlačítko "Otevřít" a v dialogu pro výběr souboru vybrat dbf, který bude exportován do Excelu.


* * *


Hlavní okno programu s načteným souborem dbf.


Pokud je soubor úspěšně nahrán, jeho data se zobrazí v tabulce. Zcela nahoře v poli "Zdrojový soubor" se zobrazí celá cesta a název načteného souboru dbf.


Poté musíte kliknout na velké tlačítko"Export dat", umístěný bezprostředně pod tabulkou s informacemi.


* * *


Okno s dotazem na měřítko sloupců.


Pokud se souborem dbf nebyly žádné problémy, měli byste vidět okno s dotazem na změnu velikosti sloupců, to znamená, zda Excel-e potřebuje roztáhnout sloupce podle šířky dat.


* * *


Pokud byly všechny operace úspěšné, spustí se instance Excelu se všemi daty, která jsou do ní nahrána.

Může se stát, že soubor dbf neobsahuje servisní informace o kódování, v takovém případě se zobrazí zpráva "V souboru dbf nejsou žádné informace o kódování."


Na níže uvedených obrázcích je červeně znázorněno a napsáno, které z tlačítek „Ano“ nebo „Ne“ musí být v tom či onom případě stisknuto:


Pokud je text v tabulce nečitelný.


* * *


Pokud se text v tabulce čte normálně.

Funkce programu


V systému musí být nainstalován Microsoft Excel.
Soubory Dbf se otevírají ve výhradním režimu.
Obsah polí blob není migrován.
Výkon programu byl testován na Windows XP a Windows 7.
Nástroj je zcela zdarma a nevyžaduje instalaci, což znamená, že si jej můžete stáhnout a používat.

dBASE je jedním z nejstarších systémů pro správu databází a byl použit formát souborů dBASE (DBF). na dlouhou dobu. Aplikace Microsoft Access podporuje export dat do následujících formátů souborů dBASE: dBASE III, dBASE IV, dBASE 5 a dBASE 7.

Poznámkaže podpora dBASE má následující požadavky.

    Přihlášení k odběru Office 365 Pokud jste předplatitelem Office 365, ujistěte se, že máte nejnovější Office verze. Pokud jste IT profesionál a spravujete proces aktualizace Office 365, navštivte stránku kanálů verzí a zjistěte, které aktualizace jsou poskytovány v jednotlivých kanálech.

    Office 2016 Nainstalujte další aktualizace v tomto pořadí: 2. května 2017, aktualizace pro Office 2016 (KB3115501) a 2. května 2017, aktualizace pro Access 2016 (KB3178700) .

    Edice Office 2016 Click-to-Run Aktualizace se aplikují automaticky.

Export dat do souboru dBASE

Tím se vytvoří soubor dBASE v zadaném umístění a formátu.

Access 2013 nepodporuje formát dBASE

Export dBASE není podporován v Accessu 2013. Chcete-li pracovat se soubory dBASE, zvažte upgrade svého předplatného Office 365. Export dBASE je k dispozici v předplatných Office 365 Access.